SSIS数据转换转换

SSIS Data conversion transformation

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

数据将以125.0025.00而不是1.252.50存储。

我需要调整什么?

可能的问题原因

(1) 数据类型不匹配

我认为类似的问题是由于源和目标之间的数据类型不匹配,或者数据转换输出和目标之间不匹配造成的。

(2) 数字分隔符

另一个原因可能是数值包含逗号 , 作为格式,例如千位逗号 1,000,000 和小数点分隔符 .,例如 1.02.


可能的解决方案

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

为了防止这个问题是由数据转换引起的,如果你的源数据格式正确。那么就不需要数据转换了。在 Flat File Connection Manager 编辑器中。转到高级选项卡,Select 包含小数的列并更改其数据类型(尝试 DT_NUMERICDT_DECIMAL)以及精度和小数位数 属性。

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

(2) 派生列

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

(DT_NUMERIC,18,2)[COLUMN] 

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

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

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