gpt4 book ai didi

mysql - 在shell脚本中执行MySQL命令?

转载 作者:行者123 更新时间:2023-11-29 14:06:48 26 4
gpt4 key购买 nike

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

  • 通过 SSH 连接到远程服务器
  • 从远程存储库获取最新版本的网站
  • 运行任何 SQL 补丁
  • 清理并退出

我已将 SSH 连接和 git pull 命令放入 shell 文件中,但我所坚持的是 MySQL,它本身就是一个(交互式?)shell。所以在我的文件中我有:

#!/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 提示符发出 SELECT 语句?
  2. 那么正常的流程是怎样的呢?关闭连接并重新打开它,传递补丁文件作为输入?或者在一个连接中运行所有必需的补丁?
  3. 我假设我会检查最后一个补丁文件,并对中间的任何补丁执行 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

关于mysql - 在shell脚本中执行MySQL命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14216514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com