Informatica: что-то вроде CDC без добавления столбца в целевую таблицу

У меня есть исходная таблица с именем A в oracle. Первоначально таблица A загружается (копируется) в таблицу B, затем я использую DML для таблицы A, например Insert, Delete, Update.

Как это отразить в таблице Б? без создания дополнительных столбцов в целевой таблице. Отметка времени для строки недоступна.

Мне нужно сравнить строки в исходной и целевой

например: если строка удалена в источнике, она должна быть удалена в цели. если строка обновляется, обновите ее в цели, а если она недоступна в источнике, вставьте ее в цель.

Пожалуйста помоги !!


person Sudesh Elvin Rego    schedule 09.07.2015    source источник


Ответы (2)


Возьмите A и B как источник.

Выполните полное внешнее соединение с помощью объединителя (или, если обе таблицы находятся в одной базе данных, вы можете присоединиться в квалификаторе источника)

В выражении создайте флаг на основе следующих сценариев.

  1. Ключевые поля равны null => flag = 'Delete',
  2. Ключевые поля B имеют значение null => flag = 'Insert',
  3. Присутствуют как ключевые поля A, так и B - Сравните неключевые поля A и B, если какое-либо из полей не равно, установите флаг на «Обновить», иначе «Без изменений»

Теперь вы можете отправлять записи в цель (B) после применения соответствующей функции с помощью стратегии обновления.

person Samik    schedule 09.07.2015

Если вы не хотите сохранять операции, выполненные в целевой таблице (поскольку дополнительные столбцы не допускаются), самым быстрым способом будет просто - 1) Усечь B 2) Вставить A в B

person Amit    schedule 01.09.2015