【问题标题】:Informatica Powercenter data truncation/overflow errorInformatica Powercenter 数据截断/溢出错误
【发布时间】:2014-11-14 19:58:43
【问题描述】:

我正在尝试使用从一个 Oracle DB 到另一个的 IPC 映射进行简单的数据加载。

源表结构如下:

ID  NUMBER;
C_VALUE VARCHAR2 (16);
C_CODE  VARCHAR2 (16);
SN  NUMBER;
SU  NUMBER;

目标表结构如下:

ID  NUMBER
C_VALUE VARCHAR2 (20)
SSID    NUMBER
LOADID  NUMBER
LOADROWNUMBER   NUMBER
DATEBEGIN   DATE
DATEEND DATE

当我运行工作流时,我收到以下错误:

8340||错误:目标表 [TYPE_ACC_RRB] 数据截断/溢出 错误。

当我尝试调试我的映射时,我看到c_value 字段中的输入字符串由 unicode 字符表示,并且它的长度以字节为单位加倍。

Informatica 是否将字节字符计为其字符串字段的长度? 如何让它看到字符,而不是字节?

我从会话日志中看到的是:

Server Mode: [UNICODE]
Server Code page: [UTF-8 encoding of Unicode]
The session sort order is [Binary].
Source database connection [RBO01] code page: [MS Windows Cyrillic (Slavic)]
Target database connection [STG1] code page: [MS Windows Cyrillic (Slavic)]

我的映射:

【问题讨论】:

  • 相当直接。看图
  • Yes首先我在会话中的设置“拒绝截断/溢出的行”已关闭,我在目标表中看到了截断的字符串。例如,在源中它的值是“пассивный”,但在目标表中我变成了“пассивны”。
  • 它没有帮助。首先,我在源限定符和表达式转换中将 string 更改为 nstring。运行映射并得到相同的结果。然后我在目标定义中将 varchar2 更改为 nvarchar2 - 仍然出现该错误。然后我尝试运行这个映射的调试器。在调试器中,我尝试通过此映射传递 mt 数据,并且数据成功传递而没有错误。但是数据以奇怪的方式显示 - Informatica 显示字节而不是 unicode 字符:andsh.ru/mapping_debug.png
  • 它在调试器中有效,但在实际中无效。当第一次它在没有激活“拒绝截断/溢出的行”的情况下工作时,我的目标表填充了由 8 个西里尔字符组成的截断字符串,但我的表字段是 Varchar2(20),我的数据库的编码很简单 cl8mswin1251
  • 在安装了 Informatica 的主机上,您能否尝试通过 sqlplus 插入数据并检查您是否能够看到正确的数据?如果没有,您可能必须检查该框上的 NLS_LANG 环境变量。尝试将其设置为与目标数据库代码页相同的值(MS windows Cyrillic (slavic))。

标签: unicode overflow informatica-powercenter truncation


【解决方案1】:

解决办法是在IPC服务器上定义环境变量NLS_LANG=russian_russia.cl8mswin1251

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2021-07-21
    相关资源
    最近更新 更多