SSIS数据转换转换

时间:2019-02-16 17:35:57

标签: sql-server ssis decimal etl data-conversion

在SSIS中,我读取了具有列格式的csv文件-例如1.252.50。 在数据转换任务中,我转换为十进制dt_decimal标量2。 在数据表中,该列的格式为小数(18,2)。

数据将使用125.0025.00而不是1.252.50存储。

我需要调整什么?

1 个答案:

答案 0 :(得分:0)

可能的问题原因

(1)数据类型不匹配

我认为类似的问题是由源和目标之间的数据类型不匹配或数据转换输出与目标之间的不匹配引起的。

(2)数字分隔符

另一个原因可能是,如果数值包含逗号,这样的格式,例如成千上万的逗号1,000,000和十进制分隔符.,例如1.02


可能的解决方案

(1)在源中指定数据类型

为防止此问题是由于数据转换以及源数据格式正确而引起的。这样就无需进行数据转换。在Flat File Connection Manager编辑器中。转到“高级”选项卡,选择包含小数的列,并更改其数据类型(尝试DT_NUMERICDT_DECIMAL)以及精度和小数位数属性。

enter image description here

如果问题仍然存在,请确保输入和输出具有相同的元数据(精度和小数位数)。

(2)派生列

或者您应该使用具有类似表达式的派生列转换:

(DT_NUMERIC,18,2)[COLUMN] 

(3)使用派生列替换分隔符

您可以使用派生列替换分隔符

(DT_NUMERIC,18,2)REPLACE([COLUMN], ",", ".")