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


157

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

例如,凭直觉,我可以想象它会像这样:

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

Answers:


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网站!
Guillaume Bois

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

这是一个很酷的shell技巧:

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

'<<<'指示外壳将其后的所有内容作为stdin,类似于echo中的管道。

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


13

如果这是您经常运行的查询,则可以将其存储在文件中。然后,只要您想运行它

mysql < thefile

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


6
echo "select * from users;" | mysql -uroot -p -hslavedb.mydomain.com mydb_production
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.