2015-05-30 39 views
1

我有一個複雜的查詢,我想用它作爲SSIS包中的源。我創建我的OLE DB源,將訪問模式指定爲SQL,並將我的查詢粘貼到命令文本框中。當我點擊預覽時,樣本數據會返回,並且一切都很好。SSIS中的Oracle查詢定義了錯誤的數據類型

但是,當我嘗試運行該軟件包時,我收到「外部列與數據源列不同步」以及「外部列'xxx'需要從外部列刪除」錯誤消息。請注意,在設計模式下,「錯誤列表」選項卡中沒有條目。

做我的研究我看到外部,輸出和錯誤列正在自動定義與錯誤的數據類型。一些明顯的整數列被定義爲字符串,而另一些被設置爲unicode字符串。

我試圖通過高級編輯器手動修復它們,但似乎無法更改錯誤列。但是,如果我修復外部和輸出源列,我會收到有關不同步的消息...您是否希望修復它?我點擊是,它把它放回到字符串...

感謝您的任何見解。

+0

[Oracle查詢作爲SSIS中的源定義錯誤的數據類型]的可能重複(http://stackoverflow.com/questions/2209056/oracle-query-as-source-in-ssis-defines-wrong - 數據類型) –

回答

1

您遇到的問題可以通過幾種方法之一來解決。

首先,如果您嘗試使用高級編輯器來更改此設置(我建議不要這樣做,因爲維護人員很難看到您所做的操作),您必須更改外部和輸出源列的設置同步中。單擊「是」時,「修復」是兩者之間的不匹配。其次,您可以將它們全部保留爲字符串,然後使用數據轉換組件轉換爲您需要的類型。這對未來的維護者來說更容易。

我更喜歡使用一個oracle sql語句來設置我在pl/sql中需要的類型,以便SSIS創建具有正確類型的字段。這使得定義變得明確,維護人員可以看到完成了什麼。爲此,我使用sql查詢從目標表的結構中構建我的oracle select語句(在我構建的這個項目中,我們將所有數據/結構從Oracle保持原樣轉換爲Sql Server計算機,然後再應用轉換) https://docs.google.com/leaf?id=0B4aVrSS2ke2IZGVkYWJkOWYtY2Y3Yy00MDI5LTkyMDctYjgwMGY2YzZiODRm&hl=en