当我运行 mysql 查询并将结果转储到 stdout 时,我怎么会得到一个漂亮的打印表格,即:
> mysql -e "describe <table>" <database>
+------------+--------------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------------------+-------+
| col1 | varchar(36) | NO | PRI | NULL | |
| col2 | int(11) | NO | | NULL | |
| col3 | varchar(35) | NO | | NULL | |
| col4 | varchar(35) | NO | | NULL | |
| col5 | varchar(25) | YES | | NULL | |
| col6 | varchar(255) | YES | | NULL | |
| col7 | varchar(255) | YES | | NULL | |
| col8 | varchar(2) | YES | | NULL | |
| col9 | varchar(75) | YES | | NULL | |
| col10 | varchar(75) | YES | | NULL | |
| col11 | varchar(75) | YES | | NULL | |
| col12 | varchar(2) | YES | | NULL | |
| col13 | varchar(10) | YES | | NULL | |
| col14 | varchar(20) | YES | | NULL | |
| col15 | timestamp | NO | | 0000-00-00 00:00:00 | |
| col16 | timestamp | NO | | 0000-00-00 00:00:00 | |
| col17 | timestamp | YES | | NULL | |
+------------+--------------+------+-----+---------------------+-------+
但是如果我使用命令转储查询watch
,表格格式就会消失?
IE:
> watch -n 1 'mysql -e "describe <table>" <database>'
Every 1.0s: mysql -e "describe <table>" <database> Mon Jun 9 12:08:54 2014
Field Type Null Key Default Extra
col1 varchar(36) NO PRI NULL
col2 int(11) NO NULL
col3 varchar(35) NO NULL
col4 varchar(35) NO NULL
col5 varchar(25) YES NULL
col6 varchar(255) YES NULL
col7 varchar(255) YES NULL
col8 varchar(2) YES NULL
col9 varchar(75) YES NULL
col10 varchar(75) YES NULL
col11 varchar(75) YES NULL
col12 varchar(2) YES NULL
col13 varchar(10) YES NULL
col14 varchar(20) YES NULL
col15 timestamp NO 0000-00-00 00:00:00
col16 timestamp NO 0000-00-00 00:00:00
col17 timestamp YES NULL
我可以把它找回来吗?我尝试使用 --raw 模式,但也许我只是错过了适当的标志?
答案1
您正在寻找-t
选项。MySQL 的网上帮助说-t
:
以表格形式显示输出。这是交互式使用的默认设置,但可用于以批处理模式生成表格输出。因此,当您从提示符运行 mysql 时,您会获得良好的表格格式,但是当您以“批处理模式”运行时(例如,在脚本中,或者在本例中使用
watch
),如果不使用,您将无法获得格式-t
。您想要的可能是这个的一些变体:watch -n 1 'mysql -t -e "describe table" database'
它将返回格式良好的表格。