Informatica: что-то вроде CDC без добавления каких-либо столбцов в целевой таблице
У меня есть исходная таблица с именем A в Oracle. Первоначально таблица A загружается (копируется) в таблицу B, затем я работаю с DML для таблицы A, например, "Вставить", "Удалить", "Обновить".
Как мы отражаем это в таблице B? без создания дополнительного столбца в целевой таблице. Отметка времени для строки недоступна.
Я должен сравнить строки в источнике и цели
Например: если строка удалена в источнике, то она должна быть удалена в цели. если строка обновлена, обновите ее в целевом объекте и, если она недоступна в исходном, вставьте ее в целевой.
Пожалуйста помоги!!
2 ответа
Возьмите A и B в качестве источника.
Выполните полное внешнее объединение, используя объединение (или, если обе таблицы находятся в одной и той же базе данных, вы можете объединиться в Source Qualifier)
В выражении создайте флаг на основе следующих сценариев.
- Ключевыми полями являются null => flag='Delete',
- Ключевые поля B имеют значение null => flag='Insert',
- Имеются ключевые поля A и B - Сравните неключевые поля A и B, если какие-либо поля не равны, установите флаг "Обновить", иначе "Без изменений"
Теперь вы можете отправлять записи в цель (B) после применения соответствующей функции с использованием стратегии обновления
Если вы не хотите сохранять операции, выполненные в целевой таблице (поскольку дополнительный столбец не допускается), самый быстрый способ будет просто: 1) Усечь B 2) Вставить A в B