如何在平面文件目标

时间:2015-07-08 11:21:37

标签: sql-server ssis

我想了解一些关于在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 个答案:

答案 0 :(得分:1)

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

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