Миграция данных 2 таблицы с некоторыми похожими строками - PullRequest
0 голосов
/ 30 января 2020

У меня есть две таблицы, которые были заархивированы. Они имеют одинаковые строки для одной даты с небольшим количеством данных. Мне нужно вставить таблицу 2 записи в таблицу 1. Когда я это сделаю, я получу уникальное ограничение игнорируемой ошибки. Как этого добиться. Есть ли подсказки, чтобы игнорировать уже существующие данные и просто вставить новые записи.

Ответы [ 3 ]

2 голосов
/ 30 января 2020

Вы можете использовать это:

INSERT INTO destTable
SELECT Field1,Field2,Field3,... 
FROM srcTable
WHERE NOT EXISTS(SELECT * 
                 FROM destTable 
                 WHERE (srcTable.Field1=destTable.Field1 and
                       SrcTable.Field2=DestTable.Field2...etc.)
                 )
0 голосов
/ 30 января 2020

Другое возможное решение - использовать MERGE, по следующей ссылке вы можете найти полезное руководство, которое объясняет его подробно.

MERGE INTO table1 a
    USING table2 b ON (a.col1 = b.col1) -- define your own search condition
        WHEN NOT MATCHED THEN
            INSERT (a.col1, a.col2, a.col3 ...)
            VALUES (b.col1, b.col2, b.col3 ...);
0 голосов
/ 30 января 2020

Вы можете использовать SET оператор MINUS для достижения результата следующим образом:

INSERT INTO TABLE1 (<COLUMN NAMES>)
SELECT <COLUMN NAMES> FROM TABLE2
MINUS
SELECT <COLUMN NAMES> FROM TABLE1

Описание оператора MINUS согласно oracle документации is

Все отдельные строки, выбранные первым запросом, но не вторым

Cheers !!

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