用SHELL脚本封装SQL脚本
时间: 2023-07-01 19:17:22 浏览: 76
好的,这是一个比较常见的需求,您可以尝试以下步骤:
1. 创建一个名为`run_sql.sh`的shell脚本,用于封装SQL脚本的执行。
2. 在`run_sql.sh`中,使用`read`命令获取用户输入的数据库连接信息,例如数据库地址、用户名和密码等。
3. 在`run_sql.sh`中,使用`read`命令获取用户输入的SQL脚本文件路径。
4. 在`run_sql.sh`中,使用`mysql`命令执行SQL脚本,具体命令可以参考如下示例:
```
mysql -h $host -u $user -p$pass -D $dbname < $sqlfile
```
其中,`$host`、`$user`、`$pass`和`$dbname`分别为用户输入的数据库连接信息,`$sqlfile`为用户输入的SQL脚本文件路径。
5. 在`run_sql.sh`中,可以添加一些提示信息和异常处理逻辑,例如输入信息的验证、文件路径的检查等。
6. 最后,将`run_sql.sh`设置为可执行文件,并且可以将其添加到环境变量中,以便在终端中直接执行。
希望这些步骤可以帮到您!
相关问题
用SHELL脚本封装SQL存储,实例
好的,以下是一个实例脚本,用于封装SQL存储的执行:
```bash
#!/bin/bash
# 获取用户输入的数据库连接信息
read -p "请输入数据库地址: " host
read -p "请输入用户名: " user
read -p "请输入密码: " -s pass
echo
read -p "请输入数据库名称: " dbname
# 获取用户输入的存储过程名称
read -p "请输入存储过程名称: " procedure_name
# 获取用户输入的参数列表
read -p "请输入参数列表(格式: 参数名1 参数类型1, 参数名2 参数类型2, ...): " params
# 获取用户输入的存储过程代码文件路径
read -p "请输入存储过程代码文件路径: " sqlfile
# 判断存储过程代码文件是否存在
if [ ! -f "$sqlfile" ]; then
echo "文件 $sqlfile 不存在,请重新输入!"
exit 1
fi
# 拼接创建存储过程的SQL语句
create_sql="CREATE PROCEDURE $procedure_name ($params) BEGIN $(cat $sqlfile) END"
# 执行创建存储过程的SQL语句
mysql -h $host -u $user -p$pass -D $dbname -e "$create_sql"
# 判断存储过程创建结果
if [ $? -eq 0 ]; then
echo "存储过程 $procedure_name 创建成功!"
else
echo "存储过程 $procedure_name 创建失败!"
fi
```
说明:
1. 用户输入的密码使用`-s`选项隐藏输入内容。
2. 使用`-f`选项判断存储过程代码文件是否存在。
3. 使用`cat`命令读取存储过程代码文件的内容,并拼接成创建存储过程的SQL语句。
4. 使用`-e`选项执行SQL语句。
5. 使用`$?`变量获取上一条命令执行的结果,0表示成功,非0表示失败。
希望这个实例脚本可以帮到您!
用shell 实例脚本封装sql脚本
好的,以下是一个实例脚本,用于封装SQL脚本的执行:
```bash
#!/bin/bash
# 获取用户输入的数据库连接信息
read -p "请输入数据库地址: " host
read -p "请输入用户名: " user
read -p "请输入密码: " -s pass
echo
read -p "请输入数据库名称: " dbname
# 获取用户输入的SQL脚本文件路径
read -p "请输入SQL脚本文件路径: " sqlfile
# 判断SQL脚本文件是否存在
if [ ! -f "$sqlfile" ]; then
echo "文件 $sqlfile 不存在,请重新输入!"
exit 1
fi
# 执行SQL脚本
mysql -h $host -u $user -p$pass -D $dbname < $sqlfile
# 判断SQL脚本执行结果
if [ $? -eq 0 ]; then
echo "SQL脚本执行成功!"
else
echo "SQL脚本执行失败!"
fi
```
说明:
1. 用户输入的密码使用`-s`选项隐藏输入内容。
2. 使用`-f`选项判断SQL脚本文件是否存在。
3. 使用`$?`变量获取上一条命令执行的结果,0表示成功,非0表示失败。
希望这个实例脚本可以帮到您!