В плоском файле мы имеем этот тип записи:
ID, операция, данные
Операции включают D = Удалить, U = Обновить, I = Вставить
1, D, Тест
Проблема в том, что они отправляют один и тот же идентификатор в файле несколько раз, и идентификатор может находиться в любом месте файла:
Например:
1, D, Тест
1000 записей позже ....
1, I, Тестирование
6000 записей позже ....
1,D, Тестирование
В нашем пакете служб SSIS имеется условное разделение, которое направляет или разделяет поток данных в зависимости от операции, удаления и обновления.Проблема в SSIS заключается в том, что он не является последовательным при обработке строк (что очень важно для производительности), и удаление может произойти после вставки или наоборот, что приводит к неверным данным.
Как лучше всегоЧтобы справиться с этим?
Некоторые идеи, которые мы придумали:
Скопируйте файл во временную таблицу и добавьте идентификатор строки файла, добавленный к записи, затем последовательно просматривайте записив SQL Server с помощью курсора (порядок по номеру строки файла).
Используйте контейнер ForEach и последовательно просматривайте каждую запись в SSIS
Сортируйте файл по идентификаторам и затем выберите «последний»Обновление.
Разбейте несколько операций на отдельные файлы.Например, если запись имеет три обновления, OriginalFile станет File1, File2, File3, а затем запустит файлы по порядку через SSIS.
Не все записи такие.Похоже, что мы предоставляем нам историю транзакций, а не последнее обновление.
Спасибо.