Linux 自用的批量执行 sql 的 shell 脚本

81—1 · 2017年11月22日 · 最后由 81—1 回复于 2017年11月23日 · 2093 次阅读

最近有用到需要批量导入 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’ 的文件。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 2 条回复 时间 点赞

感谢楼主的分享

感谢鼓励

需要 登录 後方可回應,如果你還沒有帳號按這裡 注册