如何从命令行通过mysql运行单个查询?

问题描述 投票:0回答:8

我希望能够在脚本任务中在远程服务器上运行单个查询。

例如,直觉上,我想象它会是这样的:

mysql -uroot -p -hslavedb.mydomain.com mydb_production "select * from users;"
sql mysql unix command-line
8个回答
369
投票
mysql -u <user> -p -e 'select * from schema.table'

(注意使用单引号而不是双引号,以避免 shell 将 * 扩展为文件名)


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

从使用打印输出:

-e
--execute=name

执行命令并退出。 (禁用
--force
和历史文件)


24
投票

以下是如何使用很酷的 shell 技巧来做到这一点:

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

'<<<' instructs the shell to take whatever follows it as stdin, similar to piping from echo.

使用 -t 标志启用表格格式输出


16
投票

如果这是您经常运行的查询,您可以将其存储在文件中。然后任何时候你想运行它:

mysql < thefile

(当然还有所有登录和数据库标志)


9
投票
echo "select * from users;" | mysql -uroot -p -hslavedb.mydomain.com mydb_production

2
投票

在提出问题时,容器化还没有那么流行,这就是如何使用 Ansible 将单个查询传递到 dockerized 数据库集群,遵循 @RC. 的答案:

ansible <host | group > -m shell -a "docker exec -it <container_name | container_id> mysql -u<your_user> -p<your_pass> <your_database> -e 'SELECT COUNT(*) FROM my_table;'"

如果不使用 Ansible,只需登录服务器并使用

docker exec -it ...
部分即可。

MySQL 将发出警告,指出以纯文本方式传递凭据可能不安全,因此请注意您的风险。


0
投票

来自

mysql
手册页:

   You can execute SQL statements in a script file (batch file) like this:

       shell> mysql db_name < script.sql > output.tab

将查询放入

script.sql
并运行它。


0
投票

上述许多解决方案都是特定于操作系统的,并且需要多个步骤。最好的解决方案是使用一行命令来创建数据库、选择数据库并导入数据库,通过使用命令行参数

-e
,它代表执行,它允许用户执行应用程序控制台相关的以及数据库管理系统相关命令。

[PATH_TO_MYSQL]\mysql -u YOUR_USER_ID -p -e 'CREATE DATABASE [DATABASE_NAME];USE [DATABASE_NAME];SOURCE [DATABASE_NAME_PATH];'

# USE '/' AS THE PATH SEPARATOR CHARACTER WITHIN THE SOURCE QUERY ON ALL OPERATING SYSTEMS

(e.g.) C:\Program` Files\MySQL\MySQL` Workbench` 8.0\mysql.exe -u root -p -e "CREATE DATABASE Theta_FTP;USE Theta_FTP;SOURCE C:/Users/teodo/Desktop/Theta_FTP.sql;"
© www.soinside.com 2019 - 2024. All rights reserved.