Linux中Sqlldr自动导入并更新数据

需求:定时将上月的数据导入到oracle中,并更新指定的列。

原理:利用oracle中的sqlldrLinux的定时任务crontab实现

 

步骤:

1.       文件命名约定。

由于要实现自动的导入,文件的命名要有一定的规则。要导入的数据文件名为filename+year+month   如: filename201401.txt

 

2.       数据文件内容

180000122     2014-1-4 16:05:53

180000123     2014-1-4 18:53:20

 

3.       编写sqlldr的控制文件

 load data

 infile test_tab201312.txt

append into table TEST_TAB

fields terminated by   X'09'

TRAILING NULLCOLS

(CALLNUM,STARTEDAT)

 

4.       编写脚本实现数据的导入

 #!/bin/bash

 

#  获取上两个月的年份和月份格式如:201312

v_oldfile_name=`date -d '-2 month' +%Y%m`

 

#  获取上一个月的年份和月份格式如:201401

v_file_name=`date -d '-1 month' +%Y%m`

 

# 替换sqlldr控制文件中要导入的文件名

sed -i "s/$v_oldfile_name/$v_file_name/" test_tab.ctl

 

# sqlldr导入数据,并更新

sqlplus scoot/tiger  <<EOF

 

select  count(1)  from test_tab;

 

! sqlldr  scott/tiger  control=test_tab.ctl   errors=1 rows=1000 readsize=33554432 bindsize=33554432

 

update test_tab set  sdate= trunc(startedat)  where sdate is null ;

 

commit;

analyze  table test_tab  compute statistics; 

select sysdate from dual;

exit;

EOF

 

5.       将以上脚本保存,并加入到crontab中即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值