2014-04-23 48 views
2

我在包中導入一些數據從MySQL表導入Oracle表和MS SQL Server表時遇到問題。它從MySQL到SQL Server運行良好,但是當我想要導入到Oracle時出現錯誤。SSIS - 如何轉換Oracle的實際值?

我想導入的表包含數據類型爲DT_R8的屬性(unitPrice)。

enter image description here

用於Oracle的目標數據類型是DT_NUMBERIC,你可以在拍攝看到的。

enter image description here

我添加了一個轉換步驟,以將單價數據從DT_R8轉換爲DT_NUMERIC。

enter image description here

它不工作,我得到以下錯誤。

enter image description here

我發現錯誤的細節:

一種ORA-01722(「無效號碼」)時試圖向一個字符串轉換爲一個數字發生錯誤,並且該字符串不能轉換爲有效的數字。有效的數字包含數字'0'到'9',可能有一個小數點,字符串開頭或結尾的符號(+或 - ),或'E'或'e'(如果它是浮動的科學記數法中的點數)。所有其他角色都被禁止。

但是,我不知道如何解決。

編輯:我添加了一個組件來重定向行/錯誤到一個Excel文件。

enter image description here

下面的屏幕截圖顯示,包括錯誤的過程的結果:

enter image description here

通過瀏覽記錄只有3000行,這似乎過程只接受int值中沒有真正的。所以如果價格等於10,那沒關係,但如果它是10,5,那就失敗了。

任何想法來解決這個問題?

+0

你是否100%正面的MySQL源代碼是乾淨的。什麼是SQL Server數據類型? – Zane

+0

我會將該列轉儲到txt並搜索與目標範圍內的char()代碼不匹配的任何字符代碼。此外,您使用屏幕截圖和錯誤代碼是示例。 –

+0

@Zane我再次檢查,MySQL數據源是乾淨的。值是從0.82到3475,數據類型是雙倍的。關於SQL Server數據類型它是SSIS中輸出的DT_R8,表的列是FLOAT NOT NULL類型。 – K4timini

回答

2

您的NLS環境與預期的環境不符。默認情況下,Oracle假定「,」是分組字符,「。」是小數點分隔符。確保您的會話使用NLS_NUMERIC_CHARACTERS參數的正確值。

請參閱Setting Up a Globalization Support Environment的文件。

+0

我試圖配置勒NLS環境沒有任何成功。 最後,我將Attunity提供的Oracle目標更改爲默認的OLE DB目標,並且它可以查找! – K4timini

相關問題