Excel 在SSIS中导入时舍入的十进制数

Excel 在SSIS中导入时舍入的十进制数,excel,sql-server-2008,ssis,decimal,rounding,Excel,Sql Server 2008,Ssis,Decimal,Rounding,我正在努力将SSIS中的一些数据导入SQL Server 2008 R2 excel源的数据类型设置为dtu NUMERIC,精度为18,刻度为2 在数据进入OLE DB目标之前,我设置了一个data viewer,它显示正确格式的数字,如下图所示: 在SSMS中查询列时,结果不是预期的,因为它们要么保留为0.00,要么四舍五入为1.00。表格字段的数据类型为Decimal(18,2),目标的高级设置中的输出列也设置为dtu NUMERIC,精度为18,刻度为2 有人能帮我解释一下为什么会发生

我正在努力将SSIS中的一些数据导入SQL Server 2008 R2

excel源的数据类型设置为
dtu NUMERIC
,精度为
18
,刻度为
2

在数据进入OLE DB目标之前,我设置了一个data viewer,它显示正确格式的数字,如下图所示:

在SSMS中查询列时,结果不是预期的,因为它们要么保留为0.00,要么四舍五入为1.00。表格字段的数据类型为
Decimal(18,2)
,目标的高级设置中的输出列也设置为
dtu NUMERIC
,精度为
18
,刻度为
2


有人能帮我解释一下为什么会发生这种情况吗?

在Excel工作表上,将列标记为文本,并设置格式,允许小数点后两位,完成后,您将能够将数据转换为适当的类型


另一个注意事项是,右键单击Excel源并选择“高级编辑器”。浏览“输入/输出”选项卡,在第二个“+”号上(从顶部),查看您的列的数据类型。您也可以在此处进行更改,以考虑精度。如果我是您并且面临问题,我宁愿转换为varchar并将其重新转换为float以避免丢失任何小数。

在我的例子中,有一个创建了十进制列的临时表,但我忘了指出精度,因此SQL Server创建了十进制(18,0)然后悄悄地将所有值四舍五入…

您能确认列在目标位置的映射是否正确吗?i、 e.分数列是否具有将值转换为整数列的转换?@MarkWojciechowicz
score
字段没有转换,它指向表中数据类型为
Decimal(18,2)
score
字段。这是否受excel TypeGuessRows设置的影响,该设置对前8行进行采样,并在运行时猜测数据类型?能否清除目标表并确认之前的运行没有破坏结果?另外,在执行过程中查看SQL Profiler,以确认插入了哪些值。酷。我敢打赌问题只是表中还有其他不好的数据。