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

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

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

Я должен сравнить строки в источнике и цели

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

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

2 ответа

Решение

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

Выполните полное внешнее объединение, используя объединение (или, если обе таблицы находятся в одной и той же базе данных, вы можете объединиться в Source Qualifier)

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

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

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

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

Другие вопросы по тегам