MySQL - это популярная база данных, используемая многими веб-сайтами и организациями по всему миру. Обычно для подключения к базе данных MySQL и выполнения SQL-запросов люди заходят в консоль MySQL или в GUI-инструмент типа Workbench. Но иногда вам может понадобиться выполнить запросы MySQL непосредственно из командной строки или терминала. Иногда вам даже может понадобиться добавить его в сценарий оболочки. В этой статье мы узнаем, как запустить запрос MySQL из командной строки.
Как выполнить запрос MySQL из командной строки
Вы можете легко выполнить запрос MySQL из командной строки, используя команду MySQL вместе с опцией -e.
1 | mysql -h [хост] -u [имя пользователя] -p [пароль] [база данных] -e [SQL_запрос] |
В приведенной выше команде необходимо указать имя пользователя, пароль, имя базы данных для соединения с базой данных MySQL. После опции -e необходимо указать SQL-запрос, который будет выполняться.
Вот простой пример выполнения SQL-запроса при подключении к локальной базе данных.
1 | mysql -utest_user -ptest_password -hlocalhost db -e "SELECT * FROM table;". |
Вы также можете опустить аргумент имени базы данных 'db', если вы ссылаетесь на нее в SQL-запросе.
1 | mysql -utest_user -ptest_password -hlocalhost -e "SELECT * FROM db.table;" |
Добавление точки с запятой в конце SQL-запроса необязательно. Но если вы хотите выполнить несколько SQL-запросов, вам необходимо разделить их с помощью точки с запятой, как показано в следующем примере.
1 | mysql -utest_user -ptest_password -hlocalhost -e "SELECT * FROM db.table; SELECT * from db.table2;" |
Вы также можете выполнять отдельные команды MySQL с опцией -e, если хотите.
1 2 | mysql -utest_user -ptest_password -hlocalhost -e "SELECT * FROM db.table;" mysql -utest_user -ptest_password -hlocalhost -e "SELECT * FROM db.table2;" |
Вы также можете хранить свои SQL-запросы в файле и указать MySQL прочитать этот файл. Допустим, у вас есть файл queries.txt
1 | nano queries.txt |
со следующими запросами.
1 2 | SELECT * FROM db.table; SELECT * FROM db.table2; |
Теперь, если вы хотите выполнить запросы в файле queries.txt, вы можете сделать это с помощью следующей команды. В этом случае MySQL будет читать входные данные из файла queries.txt.
1 | mysql -utest_user -ptest_password -hlocalhost < queries.txt |
Ключевым моментом, на который следует обратить внимание, является то, что вы должны указать ваш SQL-запрос в двойных кавычках. Если приведенный выше синтаксис команды вам не подходит, попробуйте заключить SQL-запрос в одинарные кавычки.
Также, если ваш SQL-запрос сам содержит двойные кавычки, то их нужно убрать, добавив перед ними обратную косую черту.
Результат вышеприведенного запроса будет выведен на консоль. Если вы хотите сохранить этот результат в другом файле, вам нужно будет использовать операторы перенаправления. Вот пример сохранения результата запроса MySQL в файл test.txt.
1 | mysql -utest_user -ptest_password -hlocalhost -e "SELECT * FROM db.table;" > /home/user/test.txt |
Одним из преимуществ выполнения запросов MySQL в командной строке является то, что вы можете передавать вывод другим командам Linux в соответствии с вашими требованиями. Вот простой пример, в котором мы передаем вывод запроса MySQL команде grep.
1 | mysql -utest_user -ptest_password -hlocalhost -e "SELECT * FROM db.table;" | grep 'abc' |
Заключение
В этой статье мы узнали, как выполнять запросы MySQL из командной строки, сохранять их вывод в файлы и даже передавать их другим командам Linux для дальнейшей обработки. Вы можете эффективно использовать их в сценарии оболочки для автоматического получения данных, их обработки и принятия мер в зависимости от полученной информации.