it-roy-ru.com

MySQL Linux инструмент командной строки и правильно отформатированные результаты

Кто-нибудь знает хороший инструмент, который можно использовать из командной консоли для запроса базы данных и получения понятных результатов ?

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

Если я запишу следующее, мне будет сложно понять результаты.

use mydb;
select * from db3_settings;

Я знаю, что мог бы использовать phpMyAdmin или MySQLCC, но я ищу решение для командной строки.

19
Peter Bushnell

Вы можете получить форматированный вывод с помощью \G.

Это стандартный вывод:

mysql> select * from tblSettings;
+-----------+----------------+---------------------+
| settingid | settingname    | settingvalue        |
+-----------+----------------+---------------------+
|         1 | maxttl         | 30                  |
|         2 | traceroutepath | /usr/bin/traceroute |
|         3 | alertemail     | [email protected]         |
+-----------+----------------+---------------------+
3 rows in set (0.00 sec)

И вот как выглядит вывод с \G:

mysql> select * from tblSettings \G;
*************************** 1. row ***************************
   settingid: 1
 settingname: maxttl
settingvalue: 30
*************************** 2. row ***************************
   settingid: 2
 settingname: traceroutepath
settingvalue: /usr/bin/traceroute
*************************** 3. row ***************************
   settingid: 3
 settingname: alertemail
settingvalue: [email protected]
3 rows in set (0.00 sec)
34
jwbensley

Есть несколько способов сделать результаты более читабельными.

Использование лимита, чтобы просмотреть только несколько строк:

SELECT * FROM table LIMIT 10;

Только возвращая выбранные столбцы:

SELECT a,b,c FROM table;

Завершение ваших запросов с помощью \Gдля отправки текущего оператора на сервер для выполнения и отображения результата в вертикальном формате:

SELECT * FROM table \G
6
ModulusJoe

Для систем, отличных от Windows, вы можете использовать less, чтобы сделать вывод форматированным или более читаемым. 

mysql > pager less -SFX;
mysql > select * from databasename.table;

он направляет вывод sql в less, давая табличный вывод, который можно прокручивать по горизонтали и вертикали с помощью клавиш курсора. выйти, нажав «q»

если вы не хотите, сбросьте с помощью

mysql> nopager
1
computingfreak

В командной строке вы можете получить результаты возвращенных записей как отдельные отформатированные записи (в отличие от длинной таблицы), используя \G в конце вашего запроса, например так:

select * from <tablename> \G;
1
karthik339

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

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

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

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

mysql> SELECT * FROM db3_settings \G;

Используя пейджер

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

mysql> pager less -S

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

mysql> SELECT * FROM db3_settings;

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

mysql> nopager
0
Ronan Boiteau