2013-03-05 351 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