shell解決我繁瑣的sqlldr操作

YallonKing發表於2011-08-12
    最近一直在忙著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
 

#!/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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章