если у вас есть уникальный ключ в целевой таблице и у вас нет исходной таблицы, то может произойти ошибка при вставке из-за повторяющихся значений
с подсказкой ignore_row_on_dupkey_index
,Вы можете игнорировать ошибки.
Вот пример, если в вашей таблице есть ключ Uniq на ИД.unique_index_name
- это имя уникального индекса в вашей целевой таблице
insert /*+ ignore_row_on_dupkey_index(tab1, unique_index_name) */
into tab1
( select * from tab2);
, в качестве альтернативы вы можете посмотреть на оператор слияния, который может выглядеть так, чтобы игнорировать ошибки
merge into tab2 a
using tab1 b
on (a.id = b.id)
when not matched then
insert (id,n)
values (b.id, b.n)
log errors into ERR$_tab2 REJECT LIMIT UNLIMITED;
;
Все ошибки будут записаны в таблицу ошибок, которую вы должны сгенерировать ранее.Вы можете сделать это, например, как
call DBMS_ERRLOG.CREATE_ERROR_LOG (dml_table_name => 'tab2);
ERR$_tab2
будет таблица ошибок