sql-server - 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,并且“派生列.输出 [派生列输出].列 [估计的订单处理费用每订单派生]”上的错误行处置指定错误失败. 指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
有人可以帮助我进行这种转换吗?
谢谢你。
解决方案
我认为错误可能是由空值或空值引起的。另外,尝试使用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]
推荐阅读
- c# - 如何在不阻塞主线程的情况下调用同步的异步函数?
- c# - 在锁定中使用异步方法的最佳实践是什么
- excel - DBeaver 社区版中的 Excel 导出选项在哪里
- angular - 在 bindLabel 上使用管道
- android - 如何在 Android 模拟器中正确模拟我的 Fossil (WearOS) 手表?
- jquery - 将粘贴值复制到输入字段时,限制小数点后 3 位无效
- json - OpenAPI v3 HTTPS 模拟
- save - Gojs:如何保存属于 UI 而不是图表的数据?
- rest - 如何在 apache camel 中使用基本身份验证进行 RESTful 调用?
- regex - 电子邮件的正则表达式模式