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