LINUX定时执行shell脚本

来源:互联网 发布:小学语文教学视频软件 编辑:程序博客网 时间:2024/05/17 00:08

需求简述:每天有一个文件要执行入库操作,数据量10万左右。不想java代码写,太繁琐,所以试着用linux的crontab的调度进程。
1、linux系统未安装sqlldr命令,首先需要装下,配置环境变量(echo $ORACLE_HOME查看)
2、linux下的普通用户可能没有crontab的操作权限,没有需赋下权限
3、编写sh脚本:

#!/bin/bashexport ORACLE_HOME=/opt/app/ora11g/product/11.2.0PATH=$ORACLE_HOME/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jboss5deploy/bin:/opt/app/ora11g/product/11.2.0/binexport PATHthefiledate=`date -d last-day +%Y%m%d`filename=GDSEtermFlow_$thefiledate.csv`sed -i 's///g' '/opt/applog/gdsftpdata/'$filename` cat > data_load.ctl << FILEEOFOPTIONS (SKIP=1)load dataCHARACTERSET ZHS16GBKinfile  '/opt/applog/gdsftpdata/$filename'append into table datalife.ETERM_FTP_DATAFields terminated by ","TRAILING NULLCOLS(USERNAME,USERIP,REASON,LOGINDATE timestamp "yyyy-mm-dd hh24:mi:ss",LOGOUTDATE timestamp "yyyy-mm-dd hh24:mi:ss",HOST_TXPACKET,HOST_RXPACKET,ITINERARY_TXPACKET,ITINERARY_RXPACKET,DATADATE "to_date('$thefiledate','yyyy-mm-dd')")FILEEOF$ORACLE_HOME/bin/sqlldr datalife/datalife1234@all10gt1 /opt/applog/gdsftpdata/data_load.ctl rows=10000 readsize=20971520 bindsize=20971520

export ORACLE_HOME因为sh不识别linux配置的环境变量,所以需要在sh重写下环境变量
4、crontab -e 50 10 * * * /apps/bin/cleanup.sh 添加调度作业

一切完成~

0 0
原创粉丝点击