首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在shell脚本中执行MySQL命令?

在shell脚本中执行MySQL命令?
EN

Stack Overflow用户
提问于 2013-01-08 13:57:31
回答 3查看 7.8K关注 0票数 0

我希望创建一个可以从终端运行的部署脚本,它会自动从存储库部署我的站点。我确定的步骤是:

  • 通过SSH连接到远程服务器
  • 从远程存储库获取站点的最新版本
  • 运行任何SQL修补程序。
  • 清理和出口

我已经将SSH连接和git pull命令放在了我的shell文件中,但是我坚持使用的是MySQL,它是一个(交互式的?)壳本身。所以在我的档案里:

代码语言:javascript
复制
#!/bin/bash

# connect to remote server via SSH
ssh $SSH_USER@$SSH_HOST

# update code via Git
git pull origin $GIT_BRANCH

# connect to the database
mysql --user $MYSQL_USER --password=$MYSQL_PASSWORD --database=$MYSQL_DBNAME

# run any database patches
# disconnect from the database
# TODO
exit 0

如您所见,我正在连接到数据库,但不确定如何执行任何MySQL语句。

目前,我有一个按数字顺序包含SQL补丁的目录。因此,1.sql2.sql,等等。然后,在我的数据库中,我有一个表,它只记录要运行的最后一个修补程序。因此,我需要执行一个SELECT语句,读取要运行的最后一个补丁,然后运行任何相应的修补程序。

  1. 如何在shell脚本中向mysql提示符发出mysql语句?
  2. 那么正常的流动是什么?关闭连接并重新打开它,传递一个补丁文件作为输入?还是在一个连接中运行所有所需的修补程序?
  3. 我想我将检查最后一个补丁文件,并对中间的任何修补程序执行一个do循环。

在这里提供帮助将是非常感谢的。

EN

回答 3

Stack Overflow用户

发布于 2013-01-08 15:22:27

假设您想在远程端完成所有的业务:

代码语言:javascript
复制
ssh $SSH_USER@$SSH_HOST << END_SSH
git pull origin $GIT_BRANCH
mysql --user $MYSQL_USER --password=$MYSQL_PASSWORD --database=$MYSQL_DBNAME << END_SQL
<sql statements go here>
END_SQL
END_SSH
票数 1
EN

Stack Overflow用户

发布于 2013-01-08 14:01:09

您可以使用Perl或类似的语言从mysql获得输出。这可以用于执行您的控制流。

在输入mysql命令时,将它们放入文件中。

然后运行为:mysql -u <user> -p -h <host> < file.sqlcommands

您还可以使用'-e‘将查询放在mysql命令行上。把你的“选择最大(补丁)从.”并读取脚本中的输出。

票数 0
EN

Stack Overflow用户

发布于 2013-01-08 14:12:34

代码语言:javascript
复制
cat *.sql | mysql --user $MYSQL_USER --password=$MYSQL_PASSWORD --database=$MYSQL_DBNAME
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14216514

复制
相关文章

相似问题

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