【问题标题】:SISS - Problems to convert DT_STR to DT_DECIMAL (decimals going to integer part number)SISS - 将 DT_STR 转换为 DT_DECIMAL 的问题(小数转换为整数部件号)
【发布时间】:2019-11-27 18:41:24
【问题描述】:

我在 VS 2015 上使用 SSIS,并使用 OLE DB 源和 OLE DB 目标(SQL Server 2017 上的表)进行测试。问题是源表我有一个字段 varchar(10) 类型,值是十进制的(记住这个字段是 varchar(10)。

值 TB_ 是:

在集成服务上,我使用了 OLE DB Source、Data Conversion 和 OLE DB Destination。

在数据转换组件上,我将类型设置为数字(我尝试过的十进制):

在 OLE DB 目标上,我映射了字段:

但是,当我执行包时,OLE DB 目标具有以下值:

CAMPO2 字段的正确值为 4.51、20.5 和 98.54

结构表 OLE DB Destination 是:

有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

    问题原因

    主要原因是小数分隔符,varchar列包含逗号,而不是点.

    实验

    如果我们尝试将以下文本大小写为十进制 "1,2",结果是:

    12.00

    如果我们尝试将以下文本大小写为十进制 "1.2",结果是:

    1.20

    解决方案

    尝试使用具有以下表达式的派生列,而不是使用数据转换转换:

    (DT_DECIMAL,2)REPLACE([CAMPO2],",",".") 
    

    【讨论】:

      【解决方案2】:

      我认为 SSIS 读取了 Windows 区域配置。我用“,”逗号代替了点,SSIS 效果很好。

      在表达式生成器上,我使用了: (DT_DECIMAL,2)[CAMPO2]

      (不需要替换",")

      谢谢。

      【讨论】:

        猜你喜欢
        • 2013-10-29
        • 2021-04-09
        • 2020-04-21
        • 1970-01-01
        • 1970-01-01
        • 2012-09-29
        • 2020-04-07
        • 1970-01-01
        • 2019-10-05
        相关资源
        最近更新 更多