【发布时间】:2021-02-26 18:53:09
【问题描述】:
我正在尝试通过 SSIS 将数据从 IBM db2 提取到 SQL 表中。
但是,表(源)在列中包含一个特殊字符,如下所示;
"?Ǫ. note pads wearing thin"
因此,我的包失败并出现以下错误;
[OLE DB 源 [33]] 错误:OLE DB 出现错误 OLE DB 上的 Source.Outputs[OLE DB 源输出].Columns[VTTEXT] Source.Outputs[OLE DB 源输出]。返回的列状态为: “文本被截断或一个或多个字符在 目标代码页。”。
数据正在加载到 SQL 中的 VARCHAR 列中,但该错误似乎特定于我的数据源。
我怎样才能绕过它?
【问题讨论】:
-
尝试将VARCHAR列改为NVARCHAR
-
查看 DB2 中的数据定义。
SELECT * FROM ABC01.sysibm.systables AS X WHERE X.TBNAME = 'MyTable'这将拉回定义表的元数据。 NAME = 'VTTEXT' 的数据类型 COLTYPE 是什么 您还需要识别 LENGTH 属性以确保 DB2 与 SQL Server 中的长度匹配。给定列名,我希望这将是一个大型对象类型。最后,在大型机/as400 屏幕中检查 DB2 中的数据。它显示的内容与您粘贴到问题中的内容相同吗?这里也可能存在代码页问题。 DB2 在 zOS 还是 LUW 上?