最近一直在忙着sqlldr的相关操作,每次要倒入200G的csv文件到库里,就修改控制文件消耗了我大把大把的时间呐,今天索性不不写了,好好观察了下,发现文件都有规律可循,于是就试着写了个简单的shell脚本,经过测试还行,每次只需要修改一个控制文件就行,算是把我从重复性工作中解脱出来了...
一下是大致内容:
[oracle@test test]$ ll
total 20
-rwxrwxrwx. 1 oracle oinstall 355 Aug 12 01:21 change.sh
-rw-r--r--. 1 oracle oinstall 163 Aug 12 00:17 ctl.ctl
drwxr-xr-x. 2 oracle oinstall 4096 Aug 12 01:17 file_temp
drwxr-xr-x. 2 oracle oinstall 4096 Aug 12 01:17 log
drwxr-xr-x. 2 oracle oinstall 4096 Aug 12 01:14 testsource
total 20
-rwxrwxrwx. 1 oracle oinstall 355 Aug 12 01:21 change.sh
-rw-r--r--. 1 oracle oinstall 163 Aug 12 00:17 ctl.ctl
drwxr-xr-x. 2 oracle oinstall 4096 Aug 12 01:17 file_temp
drwxr-xr-x. 2 oracle oinstall 4096 Aug 12 01:17 log
drwxr-xr-x. 2 oracle oinstall 4096 Aug 12 01:14 testsource
#!/bin/bash
file_in=/tmp/test/testsource
file_temp=/tmp/test/file_temp
for file_a in ${file_in}/*; do
cp $file_a $file_temp/test.csv
filename=`basename $file_a`
sqlldr test/test control=/tmp/test/ctl.ctl bad=/tmp/test/test.bad log=/tmp/test/test.log direct=true
rm -rf $file_temp/*
mv /tmp/test/test.log /tmp/test/log/$filename
done
[oracle@test test]$ cat ctl.ctl
load data
infile '/tmp/test/file_temp/test.csv'
into table test append
fields terminated by ',' TRAILING NULLCOLS(
id terminated by ',',
name terminated by '\n'
)
总结:工作需要动脑子 .....留此日志以作纪念!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26143577/viewspace-704757/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26143577/viewspace-704757/