首页 > 解决方案 > SSIS 派生列 - 类型转换问题

问题描述

我对 SSIS 很陌生,我有现有的 SQL 表,我想将数据加载到十进制(10,2)列中,但是作为源文件的 .csv 文件中包含--值,因此我试图将--值替换为0.00使用派生列和表达

我已将平面文件源输出 - 输出列更改为Unicode string [DT_WSTR]

新派生列的表达式为:

[estimated-order-handling-fee-per-order] == "--" ? (DT_DECIMAL,2)"0.00" : (DT_DECIMAL,2)[estimated-order-handling-fee-per-order]

派生列输出 - 列输出设置为decimal [DT_DECIMAL]

SSIS 接受所有这些,但在为派生列运行包时出错,如下所示

[派生列 [2]] 错误:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。“派生列”失败,因为发生错误代码 0xC0049063,并且“派生列.输出 [派生列输出].列 [估计的订单处理费用每订单派生]”上的错误行处置指定错误失败. 指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

有人可以帮助我进行这种转换吗?

谢谢你。

标签: sql-serverssisetlderived-column

解决方案


我认为错误可能是由空值或空值引起的。另外,尝试使用DT_NUMERIC数据类型而不是DT_DECIMAL如下:

REPLACE([estimated-order-handling-fee-per-order],"--","") == "" ? (DT_NUMERIC,10,2)"0.00" : (DT_NUMERIC,10,2)[estimated-order-handling-fee-per-order]

推荐阅读