2009-06-24 349 views
0

FIRST:是的,我知道CONCATENATE和CONTINUEIF,但我可能不夠聰明,無法理解文檔。我不「得到」他們如何解決我的問題。謝謝...我應該如何轉義Oracle SQLLoader(sqlldr)導入的引號和換行符?

我處於不得不創建一個文件,通過sqlldr的方式導入到Oracle數據庫。

這些列需要用「〜」分隔(別問。)在創建文件文件時,我對sqlldr在引用和換行方面的表現有一些擔憂。

如果一個簡單的行包含列值:

One, Hello~World I "Like" you, and Three 

我應該如何其輸出到文件?我的第一個猜測是

One~"Hello~World I "Like" you"~Three 

我想這會很容易地與TERMINATED BY「〜」任選ENCLOSED BY「「」在CTL文件中指定的字段導入。我不知道如何處理是引號周圍就像當我創建該文件應這些額外逃脫如何

額外的獎金問題:?? 可能包含行剎車如果寫出來的字段「原始」它會成爲

one~Line 
Break~three 

我在CTL文件中是否有一個選項可以用來將它們「縫合」在一起?中斷可能發生在不同的列中,每個記錄或列可能有多箇中斷。

在此先感謝!

回答

1

一些試驗之後就是我發現:

在使用

FIELDS TERMINATED BY "~" OPTIONALLY ENCLOSED BY '"' 
在CTL文件

key:number, msg:varchar2 

表結構來處理引號和分隔符的正確方法是

1~Hello World 
2~"Hello~World" 
3~"Hello ""World""" 
4~"Hello~""World""" 

所以,如果數據包含分隔符,則引用整個值並用2引號替換該值中的引號。

至於換行符,我會問另一個問題。

相關問題