0X00
在测试过程中经常会需要造一些测试数据,由于在安装程序过程中会将数据库情况,就需要经以前准备好的表的sql语句导出来,安装后在导进去。
0x01
我们经常用的就是将全部的数据导出来再导进去,mysqldump用法不在此详述。
mysqldump -u$username -p$passwd database > test.sql
mysql -u$username -p$passwd database < test.sql
或者将部分的数据导出来再导进去
mysqldump -u$username -p$passwd database tables >test.sql
mysql -u$username -p$passwd database < test.sql
但是如果只需要导入部分的sql,且这些sql有点多呢?总不能写N个
mysql -u$username -p$passwd database < test1.sql
...
mysql -u$username -p$passwd database < testn.sql
有人说了,写到shell脚本中,自动执行去呗~~
但是(怎么又但是-_-||)如果每次的sql的不一样呢?还每次都该脚本吗?岂不是浪费时间,如果改错了?
0x02
批量导入,将sql语句放入某个文件内,遍历sql语句名称,然后执行,就不会每次都改脚本了。
比如 sql文件内存在多个语句
[xxx@localhost baoji]# ls sql/
account_cabinet_info.sql account_device_base.sql bs_smv_warning.sql physical_conn_board.sql xxx_ied_config.sql
account_cell_info.sql bs_gos_ee.sql physical_conn_board_port.sql xxx_alarm_info.sql strap_history.sql
写一个循环语句,如下:
sql(){
echo "导入数据库数据中。。。"
cd $dir/sql
files=$(ls $dir/sql)
for i in $files
do
mysql -u$username -p$passwd database< $i
done
echo "导入完毕!"
}
[xxx@localhost xxx]# ./update.sh sql
导入数据库数据中。。。
导入完毕!