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

157

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

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

mysql -uroot -p -hslavedb.mydomain.com mydb_production "select * from users;"
Мэтью
источник

Ответы:

249
mysql -u <user> -p -e "select * from schema.table"
RC.
источник
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, чтобы включить вывод в формате таблицы

ʞɔıu
источник
13

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

mysql < thefile

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

dnagirl
источник
6
echo "select * from users;" | mysql -uroot -p -hslavedb.mydomain.com mydb_production
октябрь
источник