1. 程式人生 > 實用技巧 >sqlldr匯入oracle資料

sqlldr匯入oracle資料

最近配合本部門的一位工程師做投訴的資料割接,主要就是將舊系統中的資料匯入到新系統中,這裡用了一個工具sqlldr。這是一個比較好的快捷的工具,很適合批量匯入資料。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

本人也參考了網路上的一些文章,現將總結的用法歸結如下:

一、匯入命令:

1、進入偽dos,然後再進入匯入檔案根目錄如:D:\work.鍵入下面命令

sqlldr cti080916_2/1 control=plaint_doc.CTL errors=500 rows=10000

2、解釋上面的命令:sqlldr 使用者名稱/密碼 control=匯入檔案 errors=允許的錯誤數 rows=每次提交行數

3errors設定出錯最大數,預設51,如果匯入檔案時發現有51錯誤,那匯入就終止。所以最好將數字設的大些。
4
rows設定提交行數,最好設定一個適當的值,加快匯入速度。

5、匯入完檔案後,在同文件根目錄下生成plaint_doc.log日誌,記錄匯入資訊。如果匯入檔案中某行資料有錯,還會生成plaint_doc.bad檔案,記錄錯誤資料用於錯誤分析。

二、事例說明

1plaint_doc.CTL 匯入格式

LOAD DATA INFILE 'plaint_doc.txt' "str X'7C0D0A'"

INTO TABLE T_PLAINT_SHEET
APPEND
FIELDS TERMINATED BY '|+|'

TRAILING NULLCOLS
(r sequence(max,1),
sheet_id,
sheet_type,
sheet_class,
cust_type,
visit_type,
ans_type,
ans_type_info,
call_num,
busi_num,
busi_num_type,
cust_name,
apply_cust,
link_cust,
link_phone1,
link_phone2,
accept_info char(1000),
accept_type,
bb FILLER,
opt_date DATE 'YYYY-MM-DD HH24:MI:SS'
,
reply_date DATE 'YYYY-MM-DD HH24:MI:SS',
opt_user,
opt_group,
second_accept,
last_sheet_id,
hard_accept,
callback_flag,
status CONSTANT 2,
status_old,
CALL_CODE CONSTANT 0,
accept_level CONSTANT 1,
quest_accept CONSTANT 1,
opt_dept CONSTANT 'AA'
)

2、對上面標藍色的解釋 "str X'7C0D0A'"處理文字中回車換行。

|+|--分害符,用於分割每個欄位間對應的值。

TRAILING NULLCOLS—null處理,有的欄位沒有對應的值,以null值代替。

r sequence(max,1)這個欄位取sequence的值,從已有最大值向入累加附值。

char(1000)對應的匯入值超過1000個字元,就擷取1000

bb FILLER表示這個欄位對應的值不被匯入表,所以用filler過濾。

DATE 'YYYY-MM-DD HH24:MI:SS'表示這個欄位對應日期型資料,並進行格式化。

CONSTANT 2表示給欄位附常值。

3plaint_doc.txt檔案:

20080401002148|+|A00001|+|C00001|+|B00001|+|D00001|+|E00001|+|13801207063|+|81495200|+|89496966|+|G00001|+|\ |+|\ |+|張先生 先生|+|13801207099|+|\ |+|ssssssssssssssssssssss|+|000101|+|F00010|+|2008-04-01 16:46:37|+|2008-04-01 16:46:37|+|5178|+|GP0057|+|0|+|\ |+|0|+|0|+|900|+|257|+|

三、如圖

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

四、匯入資料時,最好去除索引

1、T_PLAINT_SHEET8個索引(包括主鍵索引),向該表匯入47萬條資料

測試結果:

去除索引前需時30分鐘。

去除索引後需匯入時間12秒鐘。