Как вы запускаете один запрос через MySQL из командной строки?


157

Я ищу, чтобы иметь возможность выполнить один запрос на удаленном сервере в сценарии задачи.

Например, интуитивно, я бы предположил, что это будет что-то вроде:

mysql -uroot -p -hslavedb.mydomain.com mydb_production "select * from users;"

Ответы:


249
mysql -u <user> -p -e "select * from schema.table"

3
C: \ Program Files (x86) \ MySQL \ MySQL Server 5.7 \ bin> mysql.exe -u root -p -e "мой запрос" ----> ОШИБКА 1045 (28000): доступ запрещен для пользователя 'root' @ 'localhost' (используя пароль: ДА)
Dr.jacky

2
Это должно быть первым результатом поиска в Google (для «mysql exec sql из командной строки»), а не огромного сайта MySQL!
Гийом Буа

4
Кроме того, если вы хотите удалить заголовок и формат таблицы, вы можете использоватьmysql -u <user> -p -B --disable-column-names -e 'select * from schema.table'
dvlcube

2
@tinybyte Предполагая, что Linux: Insinde заключает в двойные кавычки, звездочка *раскрывается во все файлы в текущем каталоге, в то время как это расширение не происходит в одинарных кавычках, вот почему. Двойные кавычки будут работать для запросов без *.
NobbZ

2
@ Dr.jacky Я уверен, что у вас больше нет необходимости, но в будущем, если у вашего пользователя root нет пароля, не передавайте опцию -p как пустую, просто не передавайте ее вообще, т.е.mysql.exe -u root -e "my query"
solidau

29
mysql -uroot -p -hslavedb.mydomain.com mydb_production -e "select * from users;"

Из распечатки использования:

-e, --execute=name
Выполните команду и выйдите. (Отключает --forceи файл истории)


15

вот как вы можете сделать это с помощью классного трюка с оболочкой:

mysql -uroot -p -hslavedb.mydomain.com mydb_production <<< 'select * from users'

«<<<» указывает оболочке принимать все, что следует за ней, как stdin, аналогично передаче из echo.

используйте флаг -t, чтобы включить вывод в формате таблицы


13

Если вы часто выполняете запрос, вы можете сохранить его в файле. Тогда в любое время вы хотите запустить его :

mysql < thefile

(со всеми флагами входа и базы данных, конечно)


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.