需求
有部分线下数据,需要不定时手动导入到数据库。事情会比较繁杂,花时间。
解决
这是一个重复的工作,有固定的流程。可以想办法用shell脚本来实现。
设计了如下过程的shell脚本:
1.将需要导入的数据表装换成csv格式,并放入制定的文件夹下。
2.脚本执行时,会首先将load.log这个存放导数日志的文件进行清空。
3.执行一个循环,读出指定文件夹下面的每个文件名。连接数据库,进行数据导入,并将数据导入的结果写入load.log文件。
4.循环执行结束后将该日志文件发送给相关人员邮箱。就可以监控这次的数据导入是否执行成功。方便查错。
5.将目录下文件全部删除。
#! /bin/bash
folder="/aaa/data" #存放文件的目录
ture >Load.log #清空日志文件
for file in ${folder}/*; #循环获取文件名
do
file_name=`basename $file`
path=${folder}/$file_name
(
db2 connect to databasename user db2_user using mima
db2 "load from $path of del MODIFIED BY codepage=1386 insert into TABLE(TIME,LID,ITEM_ID,ITEM_NAME,UNIT,AMOUNT,REMARK,SUGGESTION)" >>Load.log #数据导入并将结果写进日志
)
done
mail -s "load" xxxxxxxx@qq.com < Load.log #发送email
rm -rf ${folder}/*
本来还希望实现,脚本的自动执行。试了crontab命令,但是还没有成功。
邮件配置参考:http://www.jianshu.com/p/0ef1eaad9870