sqlldr匯入oracle資料
阿新 • • 發佈:2020-10-09
最近配合本部門的一位工程師做投訴的資料割接,主要就是將舊系統中的資料匯入到新系統中,這裡用了一個工具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=每次提交行數
3、errors設定出錯最大數,預設51,如果匯入檔案時發現有51錯誤,那匯入就終止。所以最好將數字設的大些。
4、rows設定提交行數,最好設定一個適當的值,加快匯入速度。 5、匯入完檔案後,在同文件根目錄下生成plaint_doc.log日誌,記錄匯入資訊。如果匯入檔案中某行資料有錯,還會生成plaint_doc.bad檔案,記錄錯誤資料用於錯誤分析。 二、事例說明 1、plaint_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—表示給欄位附常值。 3、plaint_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" />
4、rows設定提交行數,最好設定一個適當的值,加快匯入速度。 5、匯入完檔案後,在同文件根目錄下生成plaint_doc.log日誌,記錄匯入資訊。如果匯入檔案中某行資料有錯,還會生成plaint_doc.bad檔案,記錄錯誤資料用於錯誤分析。 二、事例說明 1、plaint_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—表示給欄位附常值。 3、plaint_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_SHEET有8個索引(包括主鍵索引),向該表匯入47萬條資料 測試結果: 去除索引前需時30分鐘。 去除索引後需匯入時間1分2秒鐘。