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

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

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

当前回答

下面是你如何用一个很酷的贝壳技巧来做到这一点:

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

'<<<'指示shell将后面的内容作为stdin,类似于echo中的管道。

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

其他回答

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

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

mysql < thefile

(当然包括所有的登录和数据库标志)

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

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

从mysql手册页:

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

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

将查询放入脚本中。SQL并运行它。

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

从用法打印输出:

- e,执行=名字 执行命令退出。(禁用——force和历史文件)