首页 文章

如何在平面文件目标中使SSIS截断数字字段

提问于
浏览
1

我想要一些关于在SSIS中处理截断问题的建议 . 我在表格中有一列Col1,它是 MONEY . 我想将其输出到文本文件(固定宽度,右边粗糙) . 在输出文件中,保存Col1的列只能是8个字符宽 .

在OLEDB数据源中,Col1指定为:
“外部列”和“输出列”选项卡中的 currency [DT_CY] .

在“平面文件连接管理器”的“高级”选项卡中,Col1指定为:
currency [DT_CY]InputColumnWidth 设置为8 .

如果我使用123456789.00填充Col1并执行任务,则OLEDB源成功并将行传递到目标,但任务失败,并且:

错误:DFT_Test处的0xC02020A1,FFDEST_Test [3955]:数据转换失败 . “Col1”列的数据转换返回状态值4,状态文本“文本被截断,或者目标代码页中的一个或多个字符不匹配” . 错误:DFT_Test处的0xC02020A0,FFDEST_Test [3955]:无法复制或转换列“Col1”的平面文件数据 .

我想避免这些截断错误 . 在源的错误输出中,我将Col1的Truncation属性从Fail Component更改为Ignore Failure . 我原以为这会解决问题,但执行任务仍然会产生同样的错误 .

有人可以提供一些关于如何使SSIS简单地将列截断为8个字符的指导吗?

1 回答

  • 1

    使用 Derived Column 任务创建一个8字符字符串的列,并从 money 列填充它 . 然后在Destination组件中,将 Derived Column 映射到Col1 Destination而不是原始列 .

    或者,更好的是,在源组件中,使用将money列转换为varchar(8)或char(8)列的SQL查询 .

相关问题