2010-02-24 52 views
8

我在使用SSIS數據導入嚮導將數據從製表符分隔的平面文件(TSV文件)上傳到SQL Server 2005中時出現問題。我沒有在SQL Server 2000中使用同樣的過程遇到這個問題,並且我已經檢查了我嘗試導入的文件的內部結構在SQL Server升級發生之前就沒有變化。使用SSIS導入/導出嚮導在數字列中保留NULL?

問題是所有具有數字數據類型的列中的空值(例如smallint,float等)在導入時被轉換爲0,而不是NULL。這意味着跨越這些數據的AVG會給出錯誤的輸出。

TSV文件不包含文本限定符,但是測試使用具有某些虛擬數據的限定符不會導致解決此問題。

可以通過導入到VARCHAR列來保留NULL,但這遠非理想。有沒有方法指示SSIS導入/導出嚮導將空白值從平面文件導入到數字數據類型爲NULL而不是0的列中?

回答

4

見我answer here

嚮導不公開正確塞汀你需要...

+0

這是否意味着導入/導出嚮導中無法切換「保留空值」設置? 其中的替代方法是導入數據最有效的方法嗎?到目前爲止,我只使用嚮導導入。 道歉,如果這似乎是一個基本問題 - 我不是程序員,我的工作是分析數據並基於它生成報告,但爲了做到這一點,我需要把它放到數據庫中。 – Lethanta

+0

@Lethanta;這是正確的,對不起。其他導入數據的方法更多的是「程序員」 – gbn

2

@gbn:爲指針感謝。我相信我現在已經找到了解決這個問題的辦法,並且能夠成功地將數據列中包含NULL值的SQL Server 2005數據庫數據導入到數據庫中。


如果其他人是否有同樣的問題:

我在Business Intelligence Development Studio中數據流任務(而不是使用dtswizard如前)導入的數據通過將數據流任務從平面文件源構建到OLE DB目標。

在平面文件源編輯器框中,有一個'將來自源的空值保留爲數據流中的空值'複選框。滴答這似乎解決了這個問題。

正如@gbn指出的那樣,該向導中缺少此框。

相關問題