在SSIS中导入时十进制被舍入

时间:2015-02-02 14:16:00

标签: excel sql-server-2008 ssis decimal rounding

我很难将SSIS中的某些数据导入SQL Server 2008 R2。

excel源的数据类型设置为DT_NUMERIC,精度为18,缩放为2

我已经在数据进入OLE DB目的地之前设置了一个数据查看器,它显示了正确格式化的数字,如下图所示:

Example Data

在SSMS中查询列时,不会出现结果,因为它们要么保留为0.00,要么舍入为1.00。表格字段的数据类型为Decimal(18,2),目标高级设置中的输出列也设置为DT_NUMERIC,精度为18,标度为{{1 }}。

有人可以帮我解释为什么会这样吗?

2 个答案:

答案 0 :(得分:0)

在Excel工作表上,将列标记为带有格式的文本以允许2个小数位,一旦完成,您就可以将数据转换为适当的类型。

在第二个注释中,右键单击Excel源并选择" Advanced Editor"。浏览输入/输出选项卡和第二个" +"标志(从顶部开始),查看列的数据类型。您也可以在此处进行更改以实现精确度。如果我是你并面临问题,我宁愿转换为varchar并将其重新转换为浮动以避免丢失任何小数。

答案 1 :(得分:0)

在我的情况下,创建了一个带有十进制列的临时表,但是我忘了指出精度了,所以SQL Server创建了十进制(18,0)并无声地四舍五入了所有值...