2009-06-26 50 views
0

我是一名編寫C#應用程序的前端開發人員,用於將數據從Oracle存儲過程導出到文本文件中,以便以後導入到不同的Oracle數據庫中。數據將用SQL Loader(sqlldr)加載,我試圖理解該工具的能力,以便我可以使用SQL Loader輕鬆處理的格式輸出文件。如何使用SQL加載程序處理數據中的換行符

我不確定如何處理列數據中的換行符。某些列是描述,可能包含換行符。我無法在SQL Loader中找到一個選項來處理數據中非常數換行符的可能性。

看來我可以使用句值來終止或開始文本文件中的記錄,然後使用CONTINUEIF。然後,這給我提供了處理數據內句子值的問題。

我很猶豫,只是刪除了休息時間,因爲雖然對於這個特定的應用程序不是至關重要的,我並不想減少數據的保真度。

關於如何處理此問題的任何想法?

謝謝!

回答

3

我會在文本文件之前查看EXPDP和IMPDP。在10g中,您可以使用數據泵讀/寫外部表。請參閱here。您的出口變得那樣簡單

SQL> CREATE TABLE EMP_50 
2 ORGANIZATION EXTERNAL 
3 (TYPE oracle_datapump 
4 DEFAULT DIRECTORY dmp_dir 
5 LOCATION (‘emp_50.dmp')) 
6) 
7 AS SELECT * FROM EMPLOYEES WHERE DEPARTMENT_ID = 50 
8 ; 

你不必擔心任何稀奇古怪的字符,日期或數字轉換/格式化,甚至原始二進制數據。

+0

看起來很好吃,我會在星期一進行調查 – 2009-06-27 11:16:55

2

在這些不同的數據庫之間創建數據庫鏈接不是更容易嗎?當您使用數據庫鏈接時,不再需要編寫C#應用程序。您只需使用select語句從其他數據庫中選擇數據。

+0

同意。不幸的是,我的公司有一個針對數據庫鏈接的政策。 :( – 2009-06-27 11:14:30

1

我將使用SQL * Loader流記錄格式(請參閱文檔)和數據中不會出現的十六進制字符串分隔符。找到不會錯誤地表示行終止的東西不應該太難。