結語本文主要是貼原始碼,即如何通過shell指令碼,用sqlldr工具載入資料入oracle庫表。
使用oracle中sqlldr工具載入資料入oracle資料庫執行指令碼需傳入5個引數日誌檔案路徑在指令碼中可自定義調整
ctl控制檔案記錄關鍵的入庫資訊,根據實際情況自定義調整
ctl檔案示例options (direct=true,skip_index_maintenance=true,errors=0)
load data
characterset al32utf8
infile '/home/mds/file/input/add/test/ora_data.txt'
truncate
into table user_info
fields terminated by '|'
trailing nullcols
(user_id,
user_name,
phone,
address
)
#!/bin/bash
#define database params
dbsid=
$1dbuser=
$2dbpass=
$3ctlfile=
$4datapath=
$5ctlname=
`basename $
`#sys data [yyyymmdd]
sysdate=
`date +'%y%m%d'
`#define log params
logfile=
$/$.log
logtemp=
$/$.tmp
#define temp log file for sqlldr, show in moia
badfile=
$/$.bad
#log function
log(
)] $*"
|tee -a $ 2>/dev/null
}#checkdir function
checkdir(
)checkdir "$"
################### main program ###################
#check the parameter
if[ $# -ne 5 ]; then
log "[error] please input the right parameter ..."
exit 255
fi#check ctlfileif[
! -f $];
then
log "[error] $ not exist, please check..."
exit 255
fi#check datapathif[
! -d $];
then
log "[error] $ not exist, please check..."
exit 255
ficd$if
[$? -ne 0 ]
;then
log "[error] failed to change path $..."
exit 255
fi#check datafile
datafile=
`cat $
|grep infile |
awk -f \' '
'`if
[! -f $];
then
log "[error] $ not exists,please check..."
exit 11
filog "sqlldr $/$@$ errors=100 control=$ bad=$ rows=3000 bindsize=33554432 > $ 2>&1"
sqlldr $/$@$ errors=100 control=
$ bad=
$ log=
$ rows=3000 bindsize=33554432 >
$ 2>
&1cat$if
[$? -ne 0 ]
;then
log "[error] failed to load data from $..."
log "$*"
exit 1
else
log "succ to load data from $."
fi
既然有裝數,那就要有卸數,請參考通過spool工具抽取oracle資料庫表資料落地檔案……
能學一點是一點,至少不是0!
over!
sqlldr 載入資料
load data infile into table consign org fields terminated by optionally enclosed by id,org code,org name,root flag,parent code,spell short,active flag...
sqlldr載入txt資料
首先建立乙個控制檔案load.ctl,名稱可以隨便起,必須以.ctl為檔案型別 內容 解釋 其中分隔符要根據資料檔案的實際分隔符一直,目標表的欄位名不一定是全量的,但是一定要與資料檔案的字段保持一直,並且資料檔案的首行的如果有列名要刪掉 下面就是載入命令 sqlldr userid cms c j ...
Oracle中使用sqlldr載入資料
示例1.建立示例資料表 create table ts user id varchar2 20 user name varchar2 30 password varchar2 50 char 1 create time date 2.在e盤下建立控制檔案data.ctl,內容如下 load data...