2010-06-22 121 views
1

我有一個使用OLEDB FastLoad將表從Oracle導入到SQL 2008的ETL。 Oracle中的數據是非Unicode。 當在SQL中創建表時,它使用unicode數據類型創建。 由於某種原因,數據類型被強制從非unicode轉爲unicode。 你們有沒有人知道阻止這種事情發生的方法? 可能是Oracle驅動程序問題?Oracle - > SQL - 強制從非unicode轉換爲unicode?

回答

0

我假設你正在使用SSIS?

猜猜看,SSIS希望一切都是unicode,因此它假設所有傳入的數據都是unicode。如果您不希望它是unicode,則需要使用數據轉換任務轉換每個字段。

+0

是的。 SSIS。 越讀越多,我意識到這是事實。 感謝您的信息。 – EWizard 2010-06-23 12:39:50

+0

剛剛實現了源和目標之間的數據轉換,並且表現非常出色。感謝您的高舉。 – EWizard 2010-06-23 16:54:29

+0

僅供參考 - 我們讓我們的ETL操作昨晚運行,表演擊斃了我們!我們的舊流程是將數據從Oracle移動到Unicode SQL表格,然後將數據抽取到Non_Unicode SQL表格(使用隱式轉換)。這種方式只需要大約2個小時即可運行。 那麼使用源和目標之間的數據轉換轉換的新方式運行了8個多小時。失敗。 Geez SSIS很痛苦。 – EWizard 2010-06-24 15:18:59

0

這是你可能想嘗試的東西。檢查要導入到的Oracle數據庫中的NLS_LANG變量的值。在運行ETL之前更改此變量可以幫助您。

檢查NLS_LANG常見問題在這裏: http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm

+0

從Oracle導入SQL。 – EWizard 2010-06-22 21:00:58

+0

仍然是一個有效的答案。 Oracle會將數據庫中的字符轉換爲查詢數據的客戶端的字符集(因爲在過去,有些客戶端不需要顯示花哨的字符)。 – 2010-06-22 23:20:10

+0

是的,仍然有效的答案。我認爲,儘管我將不得不在SSIS中的SQL方面處理這個問題。 謝謝你的回答。 – EWizard 2010-06-23 13:04:18