控制文件: UNRECOVERABLE --至關於設置表nologging LOAD DATA INFILE 'e:\TEST_PARTITION.dat' BADFILE 'e:\TEST_PARTITION.bad' DISCARDFILE 'e:\TEST_PARTITION.dsc' APPEND --insert(defualt), APPEND(= append into table table_name ,指定parallel = true時必須是append),replace(=truncate) INTO TABLE TEST_PARTITION FIELDS TERMINATED BY ',' -- OPTIONALLY ENCLOSED BY '"' -- TRAILING NULLCOLS --表的字段沒有對應的值時容許爲空 ( ID integer external , BIZ_CODE char , USER_ID integer external NULLIF USER_ID = BLANKS , CREATE_DATE DATE "yyyy-mm-dd hh24:mi:ss" NULLIF CREATE_DATE = "SYSDATE", UPDATE_DATE DATE "yyyy-mm-dd hh24:mi:ss" NULLIF UPDATE_DATE = "SYSDATE", STATUS integer external NULLIF STATUS = BLANKS , TOTAL_AMOUNT integer external NULLIF TOTAL_AMOUNT = BLANKS , DISCOUNT_AMOUNT integer external NULLIF DISCOUNT_AMOUNT = BLANKS , TOTAL_POINTS integer external NULLIF TOTAL_POINTS = BLANKS , DELETE_DATE DATE "yyyy-mm-dd hh24:mi:ss" NULLIF DELETE_DATE = "SYSDATE" , PAY_COUNT integer external NULLIF PAY_COUNT = BLANKS , IP char NULLIF IP = '127.0.0.1' , PAYMENT_ID integer external NULLIF PAYMENT_ID = BLANKS , EMALL_SITE_ID integer external NULLIF EMALL_SITE_ID = BLANKS , NOTIFY_FREQ integer external NULLIF NOTIFY_FREQ = BLANKS , RANDOM_CODE char NULLIF RANDOM_CODE = BLANKS )
命令下執行: sqlldr dev/root1234@xe control=e:/sqlldr.ctl log=e:/sqlldr.log errors=20000 direct=true parallel=true
或者:sqlldr dev/root1234@xe control=e:/sqlldr.ctl log=e:/sqlldr.log errors=20000 external_table=EXECUTE
直接加載有顯著的性能提升(不會產生log),前者使用直接路徑(不會觸發觸發器,直接把sga中的髒數據刷新到磁盤)加載,後者使用外部表(默認並行執行),爲了提升性能,能夠調整sqlldr的 READSIZE , STREAMSIZE ,COLUMNARRAYROWS參數。注意的地方: sql
一、使用直接路徑(direct=true)有必定的限制,有索引的表是不容許這樣作的,選項UNRECOVERABLE同理 shell
二、導入完成後校驗數據,由於sqlldr沒有trim空格 oracle
三、使用了direct=true(直接路徑),則不能使用insert app
四、給有索引的表加載數據完成操做後,爲了提升性能能夠考慮重建索引 性能
請參考詳細資料:oracle數據導入之SQLLoader spa
http://docs.oracle.com/cd/B10500_01/server.920/a96652/part2.htm code