需求:导出数据库中数据,生成csv文件(定时任务去做)
入口:扫表操作
扫表的sql:(polljob.sql)
select oid,jobId,batchCode,COALESCE(batchStartTime,'2000-01-01'),COALESCE(batchEndTime, '2030-01-01'),jobStatus,COALESCE(offsetOid,'0')
from T_MONEY_JOB
WHERE workerPid is null and jobStatus in ('toRun');
根据扫描出的内容,做具体的操作(jobpoller.sh):
#!/bin/bash
basedir=`dirname $0`
cd $basedir
source $basedir/db.conf.sh
cat polljob.sql | $mysqlcli -N |
while IFS=$'\t' read oid jobId batchCode batchStartTime batchEndTime jobStatus offsetOid productOid
do
args=("$jobId" "$oid" "$batchCode" "$batchStartTime" "$batchEndTime" "$jobStatus" "$offsetOid" "$productOid")
script=csvgen.sh
sh $script "${args[@]}"
done
进入到csvgen.sh脚本:
#!/bin/sh
key=$1
condition=$2
filetype=$key
basedir=`dirname $0`
confirmDate=$(date +"%Y-%m-%d" -d '-1 day')
startTime="${confirmDate} 00:00:00"
endTime="${confirmDate} 23:59:59"
[ $basedir == '.' ] && basedir=$PWD
datadir=$basedir/$key/data
logsdir=$basedir/$key/logs
# remove old files within one same minute
oldDate=$(date -d "last month" "+%Y%m%d")
if [ -d $datadir/$oldDate ];then
rm -rf $datadir/$oldDate
echo "完成删除动作"
if [ -d $datadir/$oldDate ];then
echo "删除失败"
else
echo "删除成功"
fi
else
echo "目录不存在"
fi
[ -d $datadir ] || mkdir -p $datadir
[ -d $logsdir ] || mkdir -p $logsdir
today=`date +%Y%m%d`
fileDate=`date +%Y-%m-%d`
batch="`date +%Y%m%d%H%M00`"
datadir=$datadir/$today/$batch
[ -d $datadir ] || mkdir -p $datadir
#filepre=$datadir/customer_$key_
shift
#args: jobId,batchCode,batchStart,batchEnd,jobStatus,offsetOid,productOid
jobId=$1
batchCode=$2
batchStart=$3
batchEnd=$4
jobStatus=$5
offsetOid=$6
productOid=$7
[ "x$offsetOid" = "x" ] && offsetOid=$(date +%s)
source $basedir/db.conf.sh
myfiles