我想一些數據加載到一個表,但是數據源都有我想刪除,並對此我NULL值要加載的SQLLOADER當子句包括空
我的控制頁腳記錄文件目前有:
echo "WHEN field1 <> 'FOOTER'"
但這是放棄空記錄(所有其他正在按預期工作)。
有沒有一種方法可以包含一個'或'運算符,或者在單個控制文件中以兩步加載的方式運行,例如:步驟1.處理除'FOOTER'之外的所有記錄步驟2 - 處理所有NULL記錄。
我想一些數據加載到一個表,但是數據源都有我想刪除,並對此我NULL值要加載的SQLLOADER當子句包括空
我的控制頁腳記錄文件目前有:
echo "WHEN field1 <> 'FOOTER'"
但這是放棄空記錄(所有其他正在按預期工作)。
有沒有一種方法可以包含一個'或'運算符,或者在單個控制文件中以兩步加載的方式運行,例如:步驟1.處理除'FOOTER'之外的所有記錄步驟2 - 處理所有NULL記錄。
我設法解決這個問題: 解決的辦法是把它當作兩個不同的負載,所以我的控制文件看起來像:
echo "APPEND INTO TABLE table.t1"
echo "WHEN (1:1)=' '"
echo "("
....
echo ")"
echo "INTO TABLE table.t1"
echo "WHEN field != 'FOOTER'"
echo "("
....
然後處理NULL記錄,然後處理非頁腳記錄。我在將field1的固定長度與NULL值進行匹配時遇到了困難 - 但是,只需要一次長度檢查即可。
希望這回答了其他人也在努力的問題。
你可以試試這個...
load data
infile ...
into table ...
...
...
when some_column != 'FOOTER'
...
fields terminated by ', '
我已經嘗試過這一點,它沒有work.I可以刪除when子句,它會按預期處理所有內容(單個頁腳記錄被丟棄),但是我不希望每一次這個過程都丟棄文件如果我能幫助它,就運行。我有:echo「APPEND INTO TABLE table.t1」 echo「when field1!='FOOTER'」 echo「fields terminated by'','' echo」(「 echo」field1 POSITION(01:07)\「 REPLACE(UPPER(:field1),'')\「,」 echo「field2 POSITION(09:14)\」DECODE(:field2,'000000',NULL,TO_DATE(:field2,'DDMMYY'))\「 ,「... –
OPTION子句中還有一個」LOAD = n「組件,允許您指定要加載的行數如果您使用LOAD = <文件中的行數 - 1>請看這裏的OPTION子句:http://docs.oracle.com/cd/B28359_01/server.111/b28319/ldr_control_file.htm#i1004788 –
是的,我研究過這個,但是記錄的數量是可變的,我還考慮從輸入文件中刪除頁腳(重定向到另一個文件以保留原文)但是這些並不是我想要採用的方法,因爲我希望自動加載過程儘可能地保持在表格之間的類似之處 - 唯一的區別是使用的控制文件 - 以便於調試和增強。 –