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


↙↙↙阅读原文可查看相关链接,并与作者交流