首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在bash脚本中执行多个MySQL查询

在bash脚本中执行多个MySQL查询
EN

Stack Overflow用户
提问于 2015-06-08 18:50:23
回答 2查看 148关注 0票数 0

我需要运行一个每月bash脚本通过cron,是与我们公司的计费系统。这是通过两个存储过程完成的。当我通过MySQL控制台和工作台运行它们时,它们可以正常工作。

我看过this article,这基本上就是我做它的方式。

我通过cron调用,这个shell脚本如下所示:

代码语言:javascript
复制
mysql -h 192.168.1.1 -u<username> -p<password> mydatabase < /path/to/billing_periods.sql

包含命令的文本文件如下所示:

代码语言:javascript
复制
call sp_start_billing_period();
call sp_bill_clients();

所发生的情况是,第一个查询运行,但第二个查询在第二行,没有运行。

我可以制作一个存储过程来包装这两个-但我只是想知道为什么会发生这种事.也许是我犯了一个错误,或者是你做这件事的方式受到了限制。

我还考虑过这样做(对MySQL shell的两个调用):

代码语言:javascript
复制
mysql -h 192.168.1.1 -u<username> -p<password> mydatabase -e "call sp_start_billing_period();"

mysql -h 192.168.1.1 -u<username> -p<password> mydatabase -e "call sp_bill_clients();"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-08 19:13:42

您可以尝试用分号分隔每个语句。

代码语言:javascript
复制
mysql -h 192.168.1.1 -u<username> -p<password> mydatabase -e "call sp_start_billing_period();call sp_bill_clients();"

如果您将语句保存在文件中,则可以:

代码语言:javascript
复制
while read LINE; do mysql -u<username> -p<password> mydatabase -e"$LINE";echo "-----------";done < statements.sql
票数 0
EN

Stack Overflow用户

发布于 2015-06-08 19:02:56

我认为只允许在输入.sql文件中执行一条语句,请参阅语句。

--执行=语句,-e语句执行语句并退出。默认输出格式与-批处理生成的输出格式类似.

-e是隐式的。至少,当我执行不同的mysql查询时,我会将它们放入自己的脚本中,就像您已经建议的那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30716846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档