2013-03-05 350 views
0

我有一個SSIS包從具有下列格式的平面文本文件中讀取:SSIS包與平面文件源造成溢出錯誤

"Col1";"Col2";"Col3";"Col4";"Col5" 
2012-06-18 00:00:00;0001;"99";"311";"0001" 
2012-06-18 00:00:00;0002;"99";"311";"0002" 
2012-06-18 00:00:00;0003;"99";"311";"0003" 
2012-06-18 00:00:00;0004;"99";"311";"0004" 
2012-06-18 00:00:00;0005;"99";"311";"0005" 
2012-06-18 00:00:00;0006;"99";"311";"0006" 
2012-06-18 00:00:00;0007;"99";"311";"0007" 
2012-06-18 00:00:00;0008;"99";"311";"0008" 
2012-06-18 00:00:00;0009;"99";"311";"0009" 
2012-06-18 00:00:00;0010;"99";"311";"0010" 

和插入數據到數據庫表具有相同的列。在數據庫中,Col2被定義爲DECIMAL(5,4)。該包執行9行,然後引發錯誤。當我檢查數據庫中插入的數據時,前9行中Col2處的值爲1.0000,2.0000,3.0000,...直到9.0000。在第10行,它嘗試插入10000並導致溢出錯誤。

我不知道爲什麼值乘以一千,我當然不希望這種行爲。誰能幫我?

+0

數據庫1000,2000,3000中的值是否爲1.0000,2.0000,3.0000? – msmucker0527 2013-03-05 13:44:25

+0

對不起,他們是1.0000,2.0000,3.0000。我要編輯這個問題。 – 2013-03-05 13:54:24

回答

2

查看DECIMAL數據類型這裏的SQL文件:

http://msdn.microsoft.com/en-us/library/ms187746.aspx

第一社區添置的描述你的情況下,由於您使用的是(5,4)你只能有一位數來小數點左邊。您的最大精度爲5,其中4個是右邊的小數點,右邊只有一個點。從而導致溢出

+0

因此,我可以將數據庫列更改爲DECIMAL(8,4)或類似的東西,或者將輸入文件更改爲0.0001至9.9999,對吧?你能想到任何替代解決方案嗎? – 2013-03-05 14:16:25

+0

你可以改變它爲一個字符串或int,我不知道爲什麼你將這些值填入小數位在第一位 – msmucker0527 2013-03-05 15:38:06