assiste a saída do mysql com colunas tabulares

1

como é que quando executo uma consulta mysql e despejo os resultados para stdout eu recebo uma tabela bastante impressa ou seja:

> 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                |       |
+------------+--------------+------+-----+---------------------+-------+

mas se eu descarregar uma consulta usando o comando watch , a formatação tabular desaparecerá?

ou seja:

> 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

Posso recuperar isso? Eu tentei jogar com o modo --raw, mas talvez eu tenha perdido a bandeira apropriada?

    
por veilig 09.06.2014 / 18:16

1 resposta

1

Você está procurando a opção -t . A Ajuda Online do MySQL diz sobre -t :

Display output in table format. This is the default for interactive use, but can be used to produce table output in batch mode.
Então, quando você executa o mysql a partir de um prompt, você obtém o formato de tabela legal, mas quando você executa no "modo batch" (por exemplo, dentro de um script, ou neste caso com watch ), você não obtém formatação sem usar o -t . O que você deseja é provavelmente alguma variação disso: watch -n 1 'mysql -t -e "describe table" database' , que retornará as tabelas bem formatadas.     
por 24.09.2015 / 17:28

Tags