#mysql #sql-server #ssis #etl
Вопрос:
Каков был бы «лучший» способ вставки/обновления/удаления записей из «исходной таблицы аудита» в «целевую таблицу». Исходная таблица аудита фактически загружается из базы данных MySQL в базу данных SQL Server (каждые 10 минут).
Затем я использую таблицу аудита для синхронизации основной таблицы MySQL с эквивалентом SQL Server, поскольку полное усечение и загрузка невозможны с таблицами, содержащими более 40 млн строк и растущими.
Насколько я понимаю, можно использовать инструкцию слияния, однако в этом случае действие, которое необходимо выполнить, уже находится в таблице аудита.
Мой текущий процесс включает условное разделение служб SSIS для всех трех действий и выполнение их строка за строкой, однако я думаю, что есть способ объединить существующую таблицу с таблицей аудита и выполнить действия с помощью пакетных обновлений/удалений/вставок.
Структура таблицы аудита включает в себя действия, которые необходимо выполнить
Прослушивание | Аудиторская проверка | Проект | РекордИД | Имя поля | Ценность |
---|---|---|---|---|---|
1 | вставлять | 1 | 20 | имя | привет |
2 | вставлять | 1 | 20 | имя | Мир |
3 | вставлять | 1 | 20 | дата рождения | 01/01/1970 |
4 | Удалить | 1 | 21 | имя | фу |
5 | UDPATE | 1 | 20 | имя | тест2 |
6 | Обновить | 1 | 30 | дата рождения | 21/06/2021 |
где в качестве исходной таблицы будет аналогично следующему
Проект | РекордИД | Имя поля | Ценность |
---|---|---|---|
1 | 20 | имя | привет |
1 | 20 | имя | Мир |
1 | 20 | дата рождения | 01/01/1970 |
1 | 21 | имя | бар |
1 | 21 | дата рождения | 01/01/1970 |
1 | 30 | имя | мерзавец |
1 | 30 | имя | хаб |
1 | 30 | дата рождения | 21/06/2021 |