[英]Executing MySQL commands in shell script?
我正在寻找一个可以从终端运行的部署脚本,它可以自动从存储库中部署我的站点。 我确定的步骤是:
我已经在外壳文件中放置了SSH连接和git pull
命令,但我坚持使用的是MySQL,因为它本身是一个(交互式的)外壳。 所以在我的文件中,我有:
#!/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.sql , 2.sql等。 然后,在数据库中,我有一个表,该表仅记录了要运行的最后一个补丁。 因此,我需要执行SELECT
语句,读取要运行的最后一个补丁,然后运行所有必要的补丁。
mysql
提示符发出SELECT
语句? do
循环? 这里的帮助将不胜感激。
假设您想在远程进行所有业务:
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
您可以使用Perl或类似工具从mysql获取输出。 这可以用来做您的控制流程。
将mysql命令放入文件中,就像输入它们一样。
然后运行为: mysql -u <user> -p -h <host> < file.sqlcommands
。
您也可以使用'-e'在mysql命令行上查询。 将您的“从中选择max(patch)”。 并在脚本中读取输出。
cat *.sql | mysql --user $MYSQL_USER --password=$MYSQL_PASSWORD --database=$MYSQL_DBNAME
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.