需求
有部分線下數(shù)據(jù),需要不定時(shí)手動(dòng)導(dǎo)入到數(shù)據(jù)庫。事情會(huì)比較繁雜,花時(shí)間。
解決
這是一個(gè)重復(fù)的工作,有固定的流程。可以想辦法用shell腳本來實(shí)現(xiàn)。
設(shè)計(jì)了如下過程的shell腳本:
1.將需要導(dǎo)入的數(shù)據(jù)表裝換成csv格式,并放入制定的文件夾下。
2.腳本執(zhí)行時(shí),會(huì)首先將load.log這個(gè)存放導(dǎo)數(shù)日志的文件進(jìn)行清空。
3.執(zhí)行一個(gè)循環(huán),讀出指定文件夾下面的每個(gè)文件名。連接數(shù)據(jù)庫,進(jìn)行數(shù)據(jù)導(dǎo)入,并將數(shù)據(jù)導(dǎo)入的結(jié)果寫入load.log文件。
4.循環(huán)執(zhí)行結(jié)束后將該日志文件發(fā)送給相關(guān)人員郵箱。就可以監(jiān)控這次的數(shù)據(jù)導(dǎo)入是否執(zhí)行成功。方便查錯(cuò)。
5.將目錄下文件全部刪除。
#! /bin/bash
folder="/aaa/data" #存放文件的目錄
ture >Load.log #清空日志文件
for file in ${folder}/*; #循環(huán)獲取文件名
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 #數(shù)據(jù)導(dǎo)入并將結(jié)果寫進(jìn)日志
)
done
mail -s "load" xxxxxxxx@qq.com < Load.log #發(fā)送email
rm -rf ${folder}/*
本來還希望實(shí)現(xiàn),腳本的自動(dòng)執(zhí)行。試了crontab命令,但是還沒有成功。
郵件配置參考:http://www.lxweimin.com/p/0ef1eaad9870