Как узнать, что вызывает ошибку ограничения при вставке записей в таблицу с использованием файла DAT? - PullRequest
1 голос
/ 10 апреля 2019

Я вставляю несколько записей в таблицу, используя файл DAT.Как я узнаю, какие записи вызывают ошибки ограничения (например, дублирующее ограничение)?Я использую informix dbaccess для загрузки записей.

Вот пример кода того, как я его загружаю:

load from 'table.dat'
insert into table (
    col1,
    col2,
    col3
);

Это ошибка, которую я получаю.Он показывает, где из кода sql происходит сбой, но не говорит мне, какая конкретная строка завершилась неудачей.

  268: Unique constraint (test.tableconstraint) violated.

  100: ISAM error:  duplicate value for a record with unique key.
Error in line 1
Near character position 0

1 Ответ

3 голосов
/ 10 апреля 2019

У вас есть несколько вариантов:

  1. Используйте DB-Load (dbload) вместо DB-Access для загрузки данных.

    DBLOAD Load Utility           INFORMIX-SQL Version 12.10.FC6
    
    Usage: 
    
    dbload [-d dbname] [-c cfilname] [-l logfile] [-e errnum] [-n nnum]
        [-i inum] [-s] [-p] [-r | -k] [-X]
    
        -d  database name
        -c  command file name
        -l  bad row(s) log file
        -e  bad row(s) # before abort
        -s  syntax error check only
        -n  # of row(s) before commit
        -p  prompt to commit or not on abort
        -i  # of row(s) to ignore before starting
        -r  loading without locking table
        -X  recognize HEX escapes in character fields
        -k  loading with exclusive lock on table(s)
    
  2. Использование ТАБЛИЦА НАЧАЛА НАРУШЕНИЙ и ТАБЛИЦА НАРУШЕНИЯ НАРУШЕНИЯ .Это запишет данные, которые нарушают ограничения, в одной таблице и даст диагностическую информацию в другой.Вы можете указать имена вспомогательных таблиц, если хотите, но по умолчанию используется имя базовой таблицы с суффиксами _vio и _dia.

Попробуйте оба - я подозреваю, что таблицы нарушенийлучший выбор, но оба работают.

...