sqlldr增加判斷。

wei-xh發表於2010-09-08

假如有這麼一行資料,最後兩列的資料其實都是NULL值,可是從MYSQL裡匯出來的時候,就導成了\N。

我現在想透過SQLLDR把這些資料導進ORACLE裡,想在控制檔案裡增加判斷。如果列值是\N,就插入空值。不知道該這麼寫?

這是我當前的控制檔案的寫法?

load data
INFILE "/home/oracle/weixh/stanley_outfile_20100908.csv"
truncate
into table subscription_detail
FIELDS TERMINATED BY ","
Optionally enclosed by '"'
TRAILING NULLCOLS
(ID,
SUBSCRIPTION_ID,
VACCOUNT_ID,
GMT_SCHEDULE_STRAT DATE "YYYY-MM-DD HH24:MI:SS" ,
GMT_SCHEDULE_END DATE "YYYY-MM-DD HH24:MI:SS",
STATUS,
ORDER_ID,
GMT_CREATE DATE "YYYY-MM-DD HH24:MI:SS",
GMT_MODIFIED DATE "YYYY-MM-DD HH24:MI:SS",
ORDER_ITEM_ID,
GMT_REAL,
COMMENTS,
PERSON_ID)

 

正確的寫法為:

load data
INFILE "/home/oracle/weixh/stanley_outfile_20100909.bad"
append
into table temp_subscription_detail
FIELDS TERMINATED BY ","
Optionally enclosed by '"'
TRAILING NULLCOLS
(ID,
SUBSCRIPTION_ID ,
VACCOUNT_ID nullif(VACCOUNT_ID=""),
GMT_SCHEDULE_STRAT DATE "YYYY-MM-DD HH24:MI:SS" nullif(GMT_SCHEDULE_STRAT="") ,
GMT_SCHEDULE_END  DATE "YYYY-MM-DD HH24:MI:SS"  nullif(GMT_SCHEDULE_END="") ,
STATUS,
ORDER_ID,
GMT_CREATE DATE "YYYY-MM-DD HH24:MI:SS",
GMT_MODIFIED DATE "YYYY-MM-DD HH24:MI:SS",
ORDER_ITEM_ID,
GMT_REAL,
COMMENTS nullif(COMMENTS=""),
PERSON_ID nullif(PERSON_ID=""))

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-672986/,如需轉載,請註明出處,否則將追究法律責任。

相關文章