Используя журнал ошибок СУБД, как я могу массово вставить значения из одной таблицы в другую, пропуская (но регистрируя) ошибки? - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь выполнить массовую вставку строк из одной таблицы в другую.Я хочу пропустить все ошибки, которые возникают при этом, но также регистрировать их.Я использовал следующую команду PL / SQL для создания таблицы журнала ошибок для таблицы, в которую я пытаюсь вставить все значения:

BEGIN
   DBMS_ERRLOG.create_error_log (
      dml_table_name   => 'ROBOT_ID_TOOL_DUMP_IDPK.TEST'
      , skip_unsupported => TRUE);
END;

Затем я делаю простую вставку с включенным ведением журнала:

INSERT INTO table2
SELECT * FROM table1
LOG ERRORS INTO ERR$_table2;

Ведение журнала работает, но моя вставка останавливается и откатывается после первого исключения (например, PK или ограничение уникальности).Я не хочу откатываться, когда возникает исключение, я хочу, чтобы эта строка была пропущена, и продолжать пытаться вставить все оставшиеся строки (но регистрировать проблемную строку).Я думал, что это то, что делает параметр skip_unsupported.Я попытался установить для этого значения значение ЛОЖЬ и все еще сталкиваюсь с той же проблемой.

1 Ответ

0 голосов
/ 20 декабря 2018

Я пропустил шаг на моей вставке.

INSERT INTO table2
SELECT * FROM table1
LOG ERRORS INTO ERR$_table2 REJECT LIMIT UNLIMITED;

Флаг REJECT LIMIT UNLIMITED сохраняется при каждой ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...