1

我正在尝试使用运行时列传播 (RCP) 功能使用 DataStage 9.1 从 DB2 9.7 读取一些数据。一般的方法是通过仅指定连接详细信息和表名来设置 DB2 Connector Stage 以生成查询 SQL。这种方法在大多数情况下都有效,但我遇到了多字节字符的问题。

当我进行此设置并且正在读取的数据来自其中一种 CJK(中文、日文或韩文)语言时,我^Z会在我写入的顺序文件中看到字符。当我将此数据写入数据集时,我可以看到架构错误地指定列的数据类型是string而不是ustring. 从阅读默认类型转换文档看来,DataStage 正在从 DB2 中读取数据,ustring但随后尝试将其作为string.

当我为表生成表定义时,我可以看到它生成了具有string类型的列。但是,当我将表定义加载到 DB2 连接器中时,我看到了一个默认选中的复选框,它将自动将Unicode扩展属性添加到字符列。

有了以上所有信息,DataStage 似乎能够生成ustring列而不是string,但它不能用于运行时列传播。

简而言之:有什么方法可以说服 DataStage 在使用 RCP 时生成 ustring 列?DB2 Connector 阶段是否有设置?项目级别有设置吗?是否有控制这个的环境变量?如果不是,那么我是否需要为每个表构建表定义并编写自定义作业以仅因为我看到的问题而提取该数据?

4

1 回答 1

1

这不是 DataStage 的问题,而是 DB2 配置问题。

所有使用 DB2 数据的机器都需要将它们的 DB2CODEPAGE 变量设置为相同的值。如果 DB2 服务器将其设置为 1208,但 DataStage 机器上的 DB2 客户端将其设置为另一个值,那么写入的结果将是格式错误的。

确保在安装了 DB2 客户机或服务器的所有机器上将 DB2CODEPAGE 设置为相同的值。

于 2013-08-05T16:21:35.887 回答