通過sqlldr工具載入資料入Oracle庫表

2021-10-14 13:02:26 字數 2444 閱讀 8054

結語本文主要是貼原始碼,即如何通過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...