如何用shell脚本批量执行指定路径下的sql脚本
- 本文目录导读:
- 1、Step 1:创建文件夹并准备测试数据
- 2、Step 2:编写 shell 脚本
- 3、Step 3:运行 shell 脚本
- 4、注意事项:
在日常工作中,我们经常需要对数据库进行操作。而一些重复性较高的任务,比如批量执行多个sql脚本,则可以通过编写shell脚本来自动化完成。
今天我将分享一个实现方法——使用shell脚本批量执行指定路径下的sql脚本,并带有详细步骤和注意事项。
Step 1:创建文件夹并准备测试数据
第一,在你的电脑上创建一个文件夹(例如"test_sql_scripts"),然后在该文件夹中新建两个.sql格式的文档,分别命名为"test_script_1.sql"和"test_script_2.sql"。这里我们只是简单地编写了两个示例sql语句:
-- test_script_1.sql
SELECT * FROM user;
-- test_script_2.sql
UPDATE user SET age=20 WHERE id=10001;
接着,在你的mysql数据库中创建一个名为“test_db”的数据库,并向其中插入一条记录以供查询:
USE test_db;
INSERT INTO user (id, name, age) VALUES (10001, 'Tom', 18);
Step 2:编写 shell 脚本
打开终端或者命令行窗口(Windows系统请使用Git Bash等模拟器),创建一个新的.sh文件,比如命名为"run_sql_scripts.sh"。然后将以下代码复制到该文件中:
#!/bin/bash
# 定义变量
DB_USER="root"
DB_PASSWORD="password"
DB_NAME="test_db"
# 获取当前目录
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# 遍历sql脚本并执行
for file in $DIR/*.sql
do
echo "Executing $file..."
mysql -u$DB_USER -p$DB_PASSWORD $DB_NAME
done
echo "All scripts executed successfully."
上述代码中,我们第一定义了三个变量:数据库用户名、密码和要操作的数据库名(请根据自己的实际情况修改)。然后通过"$ (cd“$(dirname”${ BASH_ SOURCE [ 0 ] }“) && pwd)"获取当前shell脚本所在路径,并将其赋值给变量 DIR。
接着,使用 for 循环遍历指定目录下所有.sql文件,并利用mysql命令执行这些sql语句。最后输出一条提示信息表示所有脚本都已经成功执行。
Step 3:运行 shell 脚本
保存好以上代码之后,在终端或者命令行窗口中输入以下命令来运行刚才编写的shell脚本:
sh run_sql_scripts.sh
如果一切正常,则会看到类似于以下输出结果:
Executing /Users/xxx/test_sql_scripts/test_script_1.sql...
Executing /Users/xxx/test_sql_scripts/test_script_2.sql...
All scripts executed successfully.
此时,我们可以登录到mysql数据库中查看数据是否被成功修改。
注意事项:
- 确保你的电脑上已经安装了mysql,并且将其添加到系统PATH环境变量中。
- 在编写sql语句时,请确保它们是正确的、有效的,并且不会导致数据丢失或损坏。在测试代码之前最好备份一下相关数据库和表格。
- 如果你想批量执行多个目录下的sql脚本,则需要稍作修改:通过for循环遍历所有子文件夹并获取其中所有.sql文件即可。
综上所述,使用shell脚本批量执行指定路径下的sql脚本是一种高效、方便而且易于维护的方法。希望这篇文章对你有所启发,如果有任何问题或建议欢迎留言交流!