Этот пост был изначально написан Дмитрием Вановербеке
MySQL клиент имеет некоторые функции, которые некоторые из нас никогда не используют. Зачем вам их использовать, и какова дополнительная ценность этого?
У каждого администратора БД и разработчика был момент, когда ему или ей нужно было подключиться к базе данных MySQL с помощью инструмента командной строки. Поэтому я записал объяснение некоторых команд командной строки, которые вы можете вставить в CLI, большинство из них дают дополнительную ценность и делают ваш опыт работы с клиентом более приятным.
незамедлительный
Кто никогда не был свидетелем страшного ощущения отсутствия связи с базой данных записи, когда открыто несколько терминалов. Я делаю, потому что я использую подсказки.
mysql >\R Production > PROMPT set to 'Production > '
Или вы можете пойти немного дальше и визуализировать пользователя, хост и активную базу данных в:
mysql > \R \u@\h [\d]> PROMPT set to '\u@\h [\d]>' root@testbox [test]>
редактировать
В некоторых ситуациях редактирование запроса в редакторе вместо cli может иметь несколько улучшений. Это дает вам возможность исправить опечатки, внимательно изучить запросы, прежде чем отправлять их и т. Д.
Если вы хотите отредактировать запрос, который вы делаете, в редакторе по умолчанию вместо использования cli.
mysql> \e
Появится редактор, в котором вы можете создать свой запрос (ы).
use sakila; select * from city limit 10; ~ ~ ~
После закрытия и установки разделителя в cli этот запрос будет выполняться к базе данных при выводе в приглашении.
mysql> \e -> ; +---------+--------------------+------------+---------------------+ | city_id | city | country_id | last_update | +---------+--------------------+------------+---------------------+ | 1 | A Corua (La Corua) | 87 | 2006-02-15 04:45:25 | | 2 | Abha | 82 | 2006-02-15 04:45:25 | | 3 | Abu Dhabi | 101 | 2006-02-15 04:45:25 | | 4 | Acua | 60 | 2006-02-15 04:45:25 | | 5 | Adana | 97 | 2006-02-15 04:45:25 | | 6 | Addis Abeba | 31 | 2006-02-15 04:45:25 | | 7 | Aden | 107 | 2006-02-15 04:45:25 | | 8 | Adoni | 44 | 2006-02-15 04:45:25 | | 9 | Ahmadnagar | 44 | 2006-02-15 04:45:25 | | 10 | Akishima | 50 | 2006-02-15 04:45:25 | +---------+--------------------+------------+---------------------+ 10 rows in set (0.03 sec)
тройник
Выполнение критического обслуживания базы данных может потребовать наличия полного журнала выполненных запросов и действий. Вы можете активировать полный вывод клиента MySQL, включая ваши выполненные запросы. Эта утилита идеально подходит, если вы предпочитаете вести журнал всех ваших действий. Это может быть для документации или способ перечитать ваши действия, если возникнут проблемы.
Пример:
mysql> \T /tmp/tee.log Logging to file '/tmp/tee.log'
Это обеспечит в выводе выполняемые вами запросы.
dim0@testing101:~$ cat /tmp/tee.log mysql> select * from city limit 5; +---------+--------------------+------------+---------------------+ | city_id | city | country_id | last_update | +---------+--------------------+------------+---------------------+ | 1 | A Corua (La Corua) | 87 | 2006-02-15 04:45:25 | | 2 | Abha | 82 | 2006-02-15 04:45:25 | | 3 | Abu Dhabi | 101 | 2006-02-15 04:45:25 | | 4 | Acua | 60 | 2006-02-15 04:45:25 | | 5 | Adana | 97 | 2006-02-15 04:45:25 | +---------+--------------------+------------+---------------------+ 5 rows in set (0.00 sec)
Всякий раз, когда у вас есть доступ только к интерфейсу MySQL, и вам нужен доступ к одному из созданных вами файлов, чтобы увидеть, что выводится, вы можете сделать это, используя \! нажатие клавиши, которая будет выполнять системные команды.
Выполнение команды оболочки из интерфейса командной строки MySQL:
mysql> \! cat /tmp/tee.log mysql> select * from city limit 5; +---------+--------------------+------------+---------------------+ | city_id | city | country_id | last_update | +---------+--------------------+------------+---------------------+ | 1 | A Corua (La Corua) | 87 | 2006-02-15 04:45:25 | | 2 | Abha | 82 | 2006-02-15 04:45:25 | | 3 | Abu Dhabi | 101 | 2006-02-15 04:45:25 | | 4 | Acua | 60 | 2006-02-15 04:45:25 | | 5 | Adana | 97 | 2006-02-15 04:45:25 | +---------+--------------------+------------+---------------------+ 5 rows in set (0.00 sec)
положение дел
В некоторых случаях вы хотели бы видеть параметры, в настоящее время активные на вашем клиенте MySQL. Поэтому вы можете использовать команду \ s. Эта команда уточнит, какие из опций активны на клиенте. Информация, которая отображается, не следует путать с SHOW VARIABLES. который сосредоточен на переменных соединения.
Запустите информацию о состоянии вашего соединения, используя \ s :
mysql> \s> -------------- mysql Ver 14.14 Distrib 5.6.15, for Linux (x86_64) using EditLine wrapper Connection id: 13149 Current database: sakila Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.6.15-63.0-log Percona Server (GPL), Release 63.0 Protocol version: 10 Connection: 127.0.0.1 via TCP/IP Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 TCP port: 3306 Uptime: 10 days 23 hours 32 min 57 sec Threads: 1 Questions: 1203169 Slow queries: 43745 Opens: 626 Flush tables: 1 Open tables: 178 Queries per second avg: 1.268 --------------
Чисто
Очистка вашего текущего входного запроса. Используйте \ c, чтобы очистить поле ввода:
mysql> SELECT * -> FROM city -> \c mysql>
пейджер
Честно говоря, одним из наиболее полезных инструментов в mysqlclient является пейджер. Для людей, склонных печатать запросы, но забывающих добавить ограничение, если им не нужно просматривать полный вывод.
«\ P less» выводит данные запроса с использованием команды UNIX less.
Вы также можете выбрать вывод результатов запроса в формате для анализа в файловой системе, используя ‘\ P cat> voila.log’ .
например:
mysql> \P cat > /tmp/voila.log PAGER set to 'cat > /tmp/voila.log' mysql> SELECT * FROM city; 600 rows in set (0.01 sec)
Это создаст файл ‘voila.log’, в котором сохраняются только выходные данные запроса. Это решение имитирует запрос SELECT INTO OUTFILE.
Во время оптимизации рабочей нагрузки может быть интересно посмотреть, имеет ли измененный запрос тот же вывод запроса
mysql >\P md5sum PAGER set to 'md5sum' [email protected] [sakila]>select * from city limit 10; 449d5bcae6e0e5b19e7101478934a7e6 - 10 rows in set (0.00 sec) mysql >select city_id, city, country_id, last_update FROM city LIMIT 10 ; 449d5bcae6e0e5b19e7101478934a7e6 - 10 rows in set (0.00 sec)
Другие команды
Есть, конечно, несколько других вариантов, которые вы можете использовать. Вы можете получить обзор всех внутренних функций cli через \ ?.
Отключение команд tee и pager, описанных в этом блогерстве, можно сделать с помощью \ t или notee, \ n или \ nopager.