Вывод команды MySQL слишком широк в клиенте командной строки

Я использую mysql клиент командной строки в эмуляторе терминала lxterminal в Ubuntu. Когда я запускаю следующую команду:

mysql> select * from routines where routine_name = "simpleproc";

На выходе получается беспорядок:

Мой текущий результат

Но если я скопирую и вставлю его сюда, результат покажет мне красивую таблицу:

mysql> select * from routines where routine_name = "simpleproc";

+---------------+-----------------+----------------+--------------+--------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+----------------+----------------+--------------+--------------------------------------------------------+---------------+-------------------+-----------------+------------------+-----------------+----------+---------------+---------------------+---------------------+-------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------------+----------------------+--------------------+
| SPECIFIC_NAME | ROUTINE_CATALOG | ROUTINE_SCHEMA | ROUTINE_NAME | ROUTINE_TYPE | DATA_TYPE | CHARACTER_MAXIMUM_LENGTH | CHARACTER_OCTET_LENGTH | NUMERIC_PRECISION | NUMERIC_SCALE | DATETIME_PRECISION | CHARACTER_SET_NAME | COLLATION_NAME | DTD_IDENTIFIER | ROUTINE_BODY | ROUTINE_DEFINITION                                     | EXTERNAL_NAME | EXTERNAL_LANGUAGE | PARAMETER_STYLE | IS_DETERMINISTIC | SQL_DATA_ACCESS | SQL_PATH | SECURITY_TYPE | CREATED             | LAST_ALTERED        | SQL_MODE                                                                                                                                  | ROUTINE_COMMENT | DEFINER        | CHARACTER_SET_CLIENT | COLLATION_CONNECTION | DATABASE_COLLATION |
+---------------+-----------------+----------------+--------------+--------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+----------------+----------------+--------------+--------------------------------------------------------+---------------+-------------------+-----------------+------------------+-----------------+----------+---------------+---------------------+---------------------+-------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------------+----------------------+--------------------+
| simpleproc    | def             | test           | simpleproc   | PROCEDURE    |           |                     NULL |                   NULL |              NULL |          NULL |               NULL | NULL               | NULL           | NULL           | SQL          | BEGIN


SELECT COUNT(*) INTO param1 FROM CUSTOMERS1;

END | NULL          | NULL              | SQL             | NO               | CONTAINS SQL    | NULL     | DEFINER       | 2018-01-12 15:18:20 | 2018-01-12 15:18:20 | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |                 | root@localhost | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
+---------------+-----------------+----------------+--------------+--------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+----------------+----------------+--------------+--------------------------------------------------------+---------------+-------------------+-----------------+------------------+-----------------+----------+---------------+---------------------+---------------------+-------------------------------------------------------------------------------------------------------------------------------------------+-----------------+----------------+----------------------+----------------------+--------------------+
1 row in set (0.01 sec)

Интересно, можно ли просмотреть вывод в эмуляторе терминала в виде красивой таблицы, подобной этой?


person Tim    schedule 16.01.2018    source источник
comment
Возможный обходной путь здесь.   -  person Michael - sqlbot    schedule 16.01.2018


Ответы (3)


Использование команды mysql ego

Из команды mysql help:

ego (\ G) Отправить команду на сервер mysql, отобразить результат вертикально.

Итак, добавив \G к вашему select, вы можете получить очень чистый вертикальный вывод:

mysql> select * from routines where routine_name = "simpleproc" \G

Использование пейджера

Вы можете указать MySQL использовать пейджер less с его опцией -S, которая разделяет широкие строки и дает вам результат, который вы можете прокручивать с помощью клавиш со стрелками:

mysql> pager less -S

Таким образом, в следующий раз, когда вы запустите команду с широким выводом, MySQL позволит вам просматривать вывод с помощью пейджера less:

mysql> select * from routines where routine_name = "simpleproc";

Если вы закончили работу с пейджером и хотите вернуться к обычному выводу на stdout, используйте это:

mysql> nopager
person Ronan Boiteau    schedule 16.01.2018
comment
Спасибо. \G решит проблему, когда в результате запроса будет только одна запись. Если в результатах запроса есть несколько записей, вы все равно будете использовать \G? - person Tim; 16.01.2018
comment
Конечно! \G использует заголовок для разделения каждой записи. Между первой и второй строками у вас будет строка, подобная этой, чтобы предупредить вас, что это вторая строка, показанная ниже: *************************** 2. row ***************************. - person Ronan Boiteau; 16.01.2018

Вы также можете попробовать настроить размер шрифта терминала, но отображение вывода по вертикали должно быть четким, если все не так. используйте параметр / G для запуска запроса, т.е.

mysql> select * from routines where routine_name = "simpleproc" \G
person auwalup    schedule 16.01.2018
comment
Это обратная косая черта, а не косая черта - person Sajjad; 15.06.2021

Если вы работаете в Ubuntu, вы можете использовать оболочку bash, она выглядит красиво и не так запутанно.

person Danushka herath    schedule 16.01.2018
comment
Я уже использую mysql в bash в lxterminal. - person Tim; 16.01.2018