分享
 
 
 

【应用】:shell crontab定时生成oracle表的数据到txt文件,并上传到ftp

王朝学院·作者佚名  2016-05-26
窄屏简体版  字體: |||超大  

【应用】:shell crontab定时生成Oracle表的数据到txt文件,并上传到ftp一、本人环境描述 1、oracle服务端装在Win7 32位上,oracle版本为10.2.0.1.0 2、linux为centos6.5 32位,安装在Oracle VM VirtualBox虚拟机上 3、win7上装有ftp服务

二、功能实现描述 用shell的crontab命令定时执行某个.sh文件,此文件的功能已实现生成oracle表的数据到本地txt文件,并上传到ftp,必要时可记录执行日志。

三、步骤 1、在centos中安装oracle客户端并配置环境变量

2、在centos中安装ftp客户端

3、编写shell,实现查询oracle数据库表,并写到本地txt文件

4、编写shell,实现上传文件到ftp

5、修改shell,打印执行日志 打印日志函数如下:

function loginfo { time_flag=`date +"%Y-%m-%d %H:%M:%S"` echo "[${time_flag}] [INFO] -- $1"}

View Code

6、所有shell代码

数据表结构见【编写shell,实现查询oracle数据库表,并写到本地txt文件】

A、把打印日志函数封装成testLog.sh,代码如下:

#!/bin/bash#######################################################################################功能:定义日志打印函数#用法:loginfo “日志内容”#版本:0.1 #作者:crazyMyWay #日期:#说明:建立初版######################################################################################function loginfo { time_flag=`date +"%Y-%m-%d %H:%M:%S"` echo "[${time_flag}] [INFO] -- $1"}

View Code

B、通过ftp上传文件代码封装成testFtptool.sh,如下:

#!/bin/bash#######################################################################################功能:ftp上传/下载文件#用法:第一个参数put(上传)还是get(下载)文件,第二个参数为FTP服务器ip,第三、四个参数分别是用户名和密码# 第五个参数是FTP上的工作目录,第六个是本地的目录,第七个是操作的文件名#例子:testFtptool.sh put|get ip_address ftp_user ftp_passWord ftp_dir local_dir filename#版本:0.1 #作者:crazyMyWay #日期:#说明:建立初版######################################################################################E_NOTROOT=67#输出帮助信息,用法:./testFtptool.sh -hif [ $# -eq 1 -a "$1" = "-h" ]then echo "Usage: $0 put|get ip_address ftp_user ftp_password ftp_dir local_dir filename" echo "Example: $0 put|get ftp服务ip ftp用户名 ftp密码 ftp目录 本地目录 文件名" exit $E_NOTROOTfi#如果参数不等于7if [ $# != 7 ]then echo "Param error: Usage: $0 put|get ip_address ftp_user ftp_password ftp_dir local_dir filename" exit $E_NOTROOTfi#进行ftp操作,ftp命令解释请查阅相关资料ftp -v -n <<!open $2 21user $3 $4PRomptepsv4 offcd $5binlcd $6$1 $7quit!

View CodeC、主要代码testStudent.sh,如下:

#!/bin/bash#######################################################################################功能:从oracle中查询数据(t_student),并写到txt文件中,以student_yyyymmdd.txt命名,# 最后上传到ftp#用法:定时调度执行,每天凌晨2点执行(或直接执行)# 注意修改:user/password@service、# 引入testLog.sh和testFtptool.sh的路径、# ftp-ip、ftp-username、ftp-password、ftp上传目录、本地目录##版本:0.1 #作者:crazyMyWay #日期:2015-03-29#说明:建立初版#######################################################################################加入用户环境变量,如果不执行这句,那么在用cron命令时,#不会自动加载用户的环境变量,如果用到sqlplus之类命令,因此会出错. ~/.bash_profile#定义文件后缀名称yyyymmddfilename_postfix=`date +"%Y%m%d"`#定义相关变量oracle_user="centos"oracle_pass="centos"oracle_id="win7orcl"current_file_dir="/ljxd/shell-demo/oracle/"current_file_name="student_${filename_postfix}.txt"common_file_dir="/ljxd/shell-demo/oracle/"ftp_ip="192.168.56.101"ftp_user="student"ftp_pass="student"ftp_upload_path="/student"#引入log文件. ${common_file_dir}testLog.shloginfo "generate data start........"#连接到oracle,设置相关参数,并输出数据到txt文件sqlplus -s ${oracle_user}/${oracle_pass}@${oracle_id} <<EOF >${current_file_dir}${current_file_name}set pages 0set feed offset heading offset feedback offset verify offset linesize 1000select t.id||'###'||t.name||'###'||to_char(t.birthday,'yyyy-mm-dd hh24:mi:ss') from t_student t;EOF#推数据到ftploginfo "transfer data to ftp.......". ${common_file_dir}testFtptool.sh put ${ftp_ip} ${ftp_user} ${ftp_pass} ${ftp_upload_path} ${current_file_dir} ${current_file_name}#endloginfo "generate data end........."

View Code注意目录结构,修改相关参数,运行./testStudent.sh即可

测试结果如下:

7、crontab命令实现定时任务

crontab -e|-l|-r

-e|-l|-r分别为编辑、查看、删除定时任务,每个用户下会有一个crontab配置文件,详细说明请查阅相关资料。

每天凌晨2点定时调度执行,并把输出日志追加到student.log文件中,crontab命令如下:

保存并退出编辑器,定时器立即生效。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有