我有一个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.000000,3.0000,...直到9.0000。在第10行,它尝试插入10000并导致溢出错误。
我不知道为什么价值乘以一千,我当然不希望这种行为。任何人都可以帮助我吗?
答案 0 :(得分:2)
请参阅此处DECIMAL
数据类型的SQL文档:
http://msdn.microsoft.com/en-us/library/ms187746.aspx
社区添加中的第一个描述了您的场景,因为您使用的是(5,4),您只能在小数点左侧有一个数字。您的最大精度为5,其中4个位于小数的右侧,只留下一个位置。从而造成你的溢出