【问题标题】:Datastage Job terminating due to the following error由于以下错误,Datastage 作业终止
【发布时间】:2013-11-23 02:00:10
【问题描述】:

我正在运行一个数据阶段作业,通过 DB2 输入并输出到 DB2。输入端有一个包含连接和函数的查询。

我收到以下警告消息;

TRN_HEALTH_INSURANCE_DETAIL,
2: STATEMENT 
INSERT
INTO
HEALTH_INSURANCE_DETAIL
(
    RISK_DETAIL_ID,
    RISK_COVER_ID,
    RD_POLICY_SYSTEM_NO,
    RD_POLICY_END_NO_IDX,
    RD_POLICY_ID,
    RD_LEVEL1_ID,
    RD_SUM_INSURED_AMT_LC,
    RD_PREMIUM_AMT_LC,
    PREMIUM_AMOUNT_FC,
    SUM_INSURED_AMT_FC,
    RD_REC_TYPE,
    RD_EFFECT_FROM_DT,
    RD_EFFECT_TO_DT,
    RD_END_EFFECT_FROM_DT,
    SEX_MAS_CD,
    MARITAL_STATUS_CD,
    EMP_CATG,
    NO_OF_DEPENDENTS,
    EMP_AL_NO,
    DOB,
    EFF_DATE,
    EFF_DATE2,
    NAME,
    RELATIONSHIP_CD_S,
    RELATIONSHIP_CD,
    DESIGNATION,
    BRANCH,
    BANK_ACCOUNT,
    BANK_BRANCH_NAME,
    PRE_EXISTING_AILMENT,
    AUTHORITY_LETTER_NO,
    AGE,
    REGION,
    CNIC,
    CO_CODE,
    EMP_LOCATION,
    SUB_LOCATION,
    CLH_SYSTEM_NO,
    CTH_SYS_ID,
    CTH_POL_SYS_ID,
    CTH_END_NO_IDX,
    CTH_END_SR_NO,
    CTH_CATEGORY,
    CLD_SYS_ID,
    CLDH_SYS_ID,
    CLD_COVER_CD,
    CLD_END_IDX,
    CLD_COVER_DESC,
    CLD_CLM_TYPE_LIMIT,
    CLD_CLM_REL,
    CLD_CLM_AGE_FROM,
    CLD_CLM_AGE_TO,
    CLD_CLM_RB_LIMIT,
    CLD_CATEGORY_LIMIT_FC,
    CLD_CATEGORY_PREM_FC
        )
            VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) failed to run.

我在我的数据中看不到这样的记录。数据质量很好。那么这些是什么????,我搜索了一下,发现一个建议将数组大小和行数保持为 1,而不是默认的 2000。但我仍然收到相同的警告。

这个警告后面有很多错误;下一个错误也很有趣。

TRN_HEALTH_INSURANCE_DETAIL,2: SQLExecute reported: SQLSTATE = 23505: Native Error Code = -803: Msg = [IBM][CLI Driver][DB2/NT64] SQL0803N  One or more values in the INSERT statement, UPDATE statement, or foreign key update caused by a DELETE statement are not valid because the primary key, unique constraint or unique index identified by "1" constrains table "DB2ADMIN.HEALTH_INSURANCE_DETAIL" from having duplicate values for the index key.  SQLSTATE=23505 (CC_DB2DBStatement::executeInsert, file CC_DB2DBStatement.cpp, line 1,095)

我相信错误是由于第一次警告造成的。请帮帮我。 问候,努赫

【问题讨论】:

  • 检查表结构。具体来说,哪些字段被定义为主键和唯一索引。该错误告诉您您违反了表的唯一约束。
  • 嗨,阿德里安,定义的 PK 是前三列; (RISK_DETAIL_ID、RISK_COVER_ID、D_POLICY_SYSTEM_NO)。我已经检查了来源,并且记录中没有重复。至于重复索引。我该如何检查?该表上的索引仅用于 PK。

标签: sql database db2 datastage cognos-10


【解决方案1】:

在 DB2 连接器之前创建一个复制阶段,将一个链接放置到 DB2 上,另一个链接到数据集文件,以查看数据集中的数据。但问题似乎出在主键中,您有重复的主索引或重复的唯一索引。它可以在您要插入的数据中,也可以在表中已经有您要再次插入的记录

【讨论】:

  • 嗨,随机,表格操作设置为“替换”,因此在插入开始之前删除所有先前的记录。至于唯一性,前 3 列(RISK_DETAIL_ID、RISK_COVER_ID、RD_POLICY_SYSTEM_NO)定义为 PK。我通过查询检查了源,没有任何主键集的多条记录。我不确定“重复唯一索引”的事情。我该如何检查?我检查了桌子上的索引。它是为 PK 创建的默认索引。
  • 您好,您能否发布用于创建此表的 DDL,因为该错误也可能是由无效的外键约束引起的(即:未找到父记录)
  • 除了PK之外,你有唯一的约束吗?还有你所说的“替换”是什么意思,你的意思是“删除而不是插入”?
猜你喜欢
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 1970-01-01
  • 2019-04-17
相关资源
最近更新 更多