使用表格列查看 mysql 输出

使用表格列查看 mysql 输出

当我运行 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'它将返回格式良好的表格。

相关内容