批量执行 sql 的 shell 脚本

时间:2022-01-10 07:44:53

最近有用到需要批量导入N个表的sql,一个个导入会吐老血的,写了个shell脚本,便捷导入。

通常我们导入单个sql,可以用

$mysql -uroot -p world < xxxx.sql

但我最近要导入一个文件里近百个sql,这么一个一个敲我都不敢想象。
搜索发现mysql 5.6以后可以用 mysql_config_editor 这个自带命令行工具方便批量执行操作。

使用方式如下:

$mysql_config_editor set --login-path=test --user=root --host=localhost --password
$Enter password: (输入密码)

下面是我实际用的shell脚本内容:
db_up_tool.sh

wdb_def="auth"
printf "What is your World database name ?\t[${wdb_def}]: "
read wdb
wdb=${wdb:-${wdb_def}}

printf "What is your MySQL password ?\t [], "
mysql_config_editor set --login-path=local --host=127.0.0.1 --port=3306 --user=root --password --skip-warn

printf "Updating data into the character database ${wdb}\n"
for file in $(ls *.sql | tr ' ' '|' | tr '\n' ' ')
do
file=$(echo ${file} | tr '|' ' ')
printf "Applying update ${file}\n"
mysql --login-path=local -q -s ${wdb} < ${file}
done

wdb_def是我默认的数据,运行后会提示你输入需要导入的数据,及密码,端口和账号脚本写死了,不同的需要自己改下。没有写选择路径,直接吧脚本到sql所在的文件夹

$./db_up_tool.sh

运行就可以了,会遍历当前的文件夹内所有‘*.sql’的文件。