当我需要问一个MysqL数据库模式问题时 – 我尝试“写出”我的表模式 – 但它很长.
所以我检查了SO – 但我找不到答案:有没有办法自动从MysqL(或PHPmyadmin)自动生成ASCII样式数据库模式?
即我想自动得到这样的东西:
+----------+---------+----------------------------+
| user_ID | user | roles |
+----------+---------+----------------------------+
| 1 | Smith | 1 |
+----------+---------+----------------------------+
| 2 | Jones | 1 |
+----------+---------+----------------------------+
人们如何做到这一点?什么是最好的方法?
假设您只需要表my_table的模式.
打开终端并运行MysqL传递用户名(-u)和密码(-p)(如果需要).在Windows上,您可能希望确保MysqL bin目录位于路径上(如果您在Windows上工作,则可能还需要拥有mysql on the PATH).
一旦你有一个MysqL终端;
您可能想要查看哪些数据库可用:
show databases;
选择要使用的数据库:
use this_database;
您可能还希望查看哪些表可用(在此数据库中):
show tables;
现在,要查看表的架构/定义,例如my_table,请运行以下命令:
describe my_table;
这应该会得到像这样的ASCII漂亮打印输出,例如:
+--------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(50) | NO | | NULL | |
| location_id | int(11) | NO | MUL | NULL | |
| manager_id | int(11) | NO | MUL | NULL | |
| other | varchar(100) | YES | | NULL | |
| creation_timestamp | datetime | NO | | NULL | |
| is_active | tinyint(1) | NO | | NULL | |
+--------------------+--------------+------+-----+---------+----------------+
如果它是您想要的架构数据,那么您可能正在使用SELECT查询来确定列名称以及您想要的任何行.例如这样的事情:
SELECT * FROM stores LIMIT 2;
将给出以下内容:
+----+------------+-------------+------------+-------+---------------------+-----------+
| id | name | location_id | manager_id | other | creation_timestamp | is_active |
+----+------------+-------------+------------+-------+---------------------+-----------+
| 1 | Good Store | 1 | 1 | | 2012-06-17 19:14:15 | 1 |
| 2 | Neu Store | 2 | 1 | | 2012-06-29 05:14:24 | 1 |
+----+------------+-------------+------------+-------+---------------------+-----------+
注意:在上面的所有例子中,MysqL肯定会得到我显示的输出(除非分页或方向改变),但是你要将这个输出复制并粘贴到SO上,你需要复制并粘贴从终端/控制台;在标准的linux / unix终端上,您可以使用鼠标选择输出,然后使用Control Shift C将其复制到剪贴板上,然后将其粘贴到SO上.在Windows上,用鼠标选择后,我想您可以右键单击并选择复制,或者您需要从控制台窗口中选择标记,然后选择输出,之后它应自动在剪贴板上可供您粘贴在SO上.
此外,当您将输出粘贴到SO上的文本框中时,请不要忘记,为了将其显示为代码,您需要选择内容,然后单击{}将其格式化为代码.或者,只需左键缩进,每行有4个空格.
希望这可以解决你的问题,虽然它不像你想要的那样自动,但我相信使用xclip和MysqL命令之类的脚本可以接近这个,自动完成:-)