【问题标题】:Issues with special characters from IBM DB2 to SQL in SSIS在 SSIS 中从 IBM DB2 到 SQL 的特殊字符问题
【发布时间】: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 上?

标签: sql ssis db2


【解决方案1】:

当 nvarchar 列可以存储任何 Unicode 数据时,varchar 列被限制为 8 位代码页。代码页不兼容是常见问题,因此Unicode 是解决代码页问题的方法。

ALTER TABLE yourtable
MODIFY thecolumn NVARCHAR(255);

【讨论】:

  • 我将目标列修改为 NVARCHAR,但仍然收到来自 OLE DB 源的错误。因此也不得不转换 DB2 查询; CAST(VTTEXT AS NVARCHAR(120)) 作为 VTTEXT
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
  • 1970-01-01
  • 1970-01-01
  • 2020-05-23
  • 1970-01-01
  • 2011-04-19
相关资源
最近更新 更多