1

почему, когда я запускаю запрос mysql и выкидываю результаты в стандартный вывод, я получаю довольно печатную таблицу, т.е.

> 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 , табличное форматирование исчезнет?

то есть:

> 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 ответ1

1

Вы ищете опцию -t . Онлайн-справка MySQL говорит о -t:

Вывести вывод в табличном формате. Это значение по умолчанию для интерактивного использования, но его можно использовать для вывода таблицы в пакетном режиме.
Таким образом, когда вы запускаете mysql из приглашения, вы получаете хороший формат таблицы, но когда вы работаете в «пакетном режиме» (например, в скрипте или в данном случае с watch ), вы не получите форматирование без используя -t . Вероятно, вам понадобится несколько вариантов этого: watch -n 1 'mysql -t -e "describe table" database' которая будет возвращать красиво отформатированные таблицы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .