Прекращение работы Datastage из-за следующей ошибки

Я запускаю задание этапа данных, ввод через 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)

Я считаю, что ошибки связаны с первым предупреждением. Пожалуйста, помогите мне. С уважением, Нух


person Nuh    schedule 22.11.2013    source источник
comment
Проверьте структуру таблицы. в частности, какие поля определены как первичный ключ, а также уникальные индексы. ошибка говорит вам, что вы нарушаете уникальное ограничение в своей таблице.   -  person Adrian Cornwell    schedule 22.11.2013
comment
Привет Адриан, Определенный ПК состоит из первых трех столбцов, которые есть; (RISK_DETAIL_ID, RISK_COVER_ID, D_POLICY_SYSTEM_NO). Я уже проверяю источник и в записях нет дублирования. Что касается индексов дублирования. Как я могу это проверить? Индексы в этой таблице предназначены только для ПК.   -  person Nuh    schedule 23.11.2013


Ответы (1)


Сделайте этап копирования перед соединителем DB2 и поместите одну ссылку на DB2, а другую — на файл набора данных, чтобы просмотреть данные в наборе данных. Но проблема, похоже, в первичном ключе, у вас есть дубликат первичного индекса или дубликат уникального индекса. Это могут быть либо ваши данные, которые вы хотите вставить, либо, возможно, в таблице уже есть запись, которую вы хотите вставить снова.

person Random    schedule 22.11.2013
comment
Hi Random, Действие таблиц установлено на «Заменить», поэтому все предыдущие записи удаляются до начала вставки. Что касается уникальности, первые 3 столбца (RISK_DETAIL_ID, RISK_COVER_ID, RD_POLICY_SYSTEM_NO) определены как PK. Я проверил источник с запросом, нет множественной записи ни для одного из наборов первичных ключей. Я не уверен насчет «дубликата уникального индекса». Как я могу это проверить? Я проверил индексы на столе. Это индекс по умолчанию, созданный для ПК. - person Nuh; 23.11.2013
comment
Привет! Можете ли вы опубликовать DDL, использованный для создания этой таблицы, поскольку ошибка также может быть вызвана недопустимым ограничением внешнего ключа (например, родительская запись не найдена) - person Adrian Cornwell; 25.11.2013
comment
У вас есть уникальное ограничение, кроме PK? А также что вы подразумеваете под заменой, вы имеете в виду удалить, а не вставить? - person Random; 26.11.2013