日期:2014-05-16  浏览次数:20501 次

etl 抽取 db2 数据到 sqlserver 报错
db2 到 sqlserver 中间有个数据转换,将字符类型转换成字符串类型,且长度都是一致的,但是数据转换阶段就截断报错退出

提示错误如下:
  数据转换 [16]: 在将列“GRAD”(87)转换为列“GRAD 的副本”(184)时数据转换失败。转换操作返回状态值 4 和状态文本“文本被截断,或者一个或多个字符在目标代码页中没有匹配项。”。
错误: 0xC020902A,位于 in_bi_empl, 数据转换 [16]: “输出列“GRAD 的副本”(184)”由于发生截断而失败,而且针对“输出列“GRAD 的副本”(184)”的截断行处理设置指定截断时出错。在指定组件的指定对象上出现截断错误。

------解决方案--------------------
nvarchar 和 nchar 要注意长度
------解决方案--------------------
转换到sql server目标表的列长度小了,更大一些,如改为nvarchar(1000)
------解决方案--------------------
是通过 SSIS 来操作的嘛,如果是 SSIS的话,需要拖个转换控件,把源转换成 字符串来操作。或者直接在源里面使用 Covert 或者Cast就可以了