2009-02-16 56 views
13

我有一個SSIS包來加載數據;你可能會記得當我嘗試將它們作爲位標誌加載到SQL Server中時,有數據文件中的標誌爲Y/N字符(1)。我將數據文件中的列指定爲String [DT_STR],並且我有一個數據轉換任務,根據以下表達式將它們轉換爲布爾值(儘管SSIS要求我說,但我收到了相同的轉換錯誤,只是將它們指定爲DT_BOOL開頭什麼樣的價值觀,應該考慮爲布爾):SSIS將字符轉換爲布爾值/位

[ColumnName] == "Y" ? (DT_BOOL)1 : (DT_BOOL)0 

運行程序包提供了一個錯誤,並告訴我Invalid character value for cast specificationThe value could not be converted because of a potential loss of data實際進口到SQL Server(通過OLE DB目標)。

我在這裏錯過了什麼讓它正確轉換?

+0

我一直在看*做的事*令人難以置信*類似於此,但我無法找到任何地方在數據轉換轉換在哪裏做到這一點。你在哪裏定義這個? – 2010-07-22 15:32:10

+1

我相信我找到了它 - 它實際上是派生列轉換。 – 2010-07-22 16:38:26

回答

11

我能夠通過使用派生列,取而代之的替換字符列來解決它,創造設爲類型的DT_BOOL像這樣的新欄目:

[Recycled] == "Y" ? True : False 
17

嘗試這種情況:

(DT_BOOL)([ColumnName] == "Y" ? 1 : 0) 

這也具有自動正確設置派生列的數據類型的優點。

0

我有同樣的問題

(DT_BOOL)([的ColumnName] ==「Y」 1:0)

,我只能得到它採取了「(DT_BOOL)」部分進行表達和推杆的工作工作通過選擇「布爾」將其轉換爲「數據類型」部分的布爾值[DT_BOOL]。之後沒有問題。