Как перенести данные из MySQL в SSMS с помощью Ssis - PullRequest
1 голос
/ 26 марта 2019

как мы можем вставить новые данные или обновить данные из одной таблицы в другую с MySQL на SQL-сервер, используя ssis и не используя lookup.

Ответы [ 2 ]

0 голосов
/ 30 марта 2019

Дизайн для этого будет выглядеть следующим образом:

У вас будет 4 таблицы и 1 представление: Source, TMP_Dest (точно как источник без PK), CHG_Dest (для изменений, точно как пункт назначения без PK), Dest (будет иметь PK), FV_TMP_Dest (это в том случае, если место назначения отличается от источника - разные типы полей)

Пакет служб SSIS:

1.Используйте ExecuteSQLTask и обрежьте TMP_Dest, потому чтоэто просто временно для извлеченных данных

Используйте ExecuteSQlTask ​​и обрезайте CHG_Dest, потому что это просто временно для извлеченных данных

Используйте один DataFlowTask для загрузки данных из источника в TMP_Dest

Определите две переменные OperationIDInsert = 1 и OperationIDUpdate = 2 (значения не важны, вы можете установить их по своему усмотрению) -> вы будете использовать их в точке 5. ниже

Использовать другую DataFlowTask, в которой вы будете иметь:

на левой стороне Источник OLE DB, в котором вы будете извлекать данные из представления, упорядоченного PK (не забудьтеt SortKeyPosition из расширенного редактора для полей PK)

на правой стороне источника OLE DB, в котором вы извлекаете данные из Dest, упорядоченного PK (не забудьте установить SortKeyPosition из расширенного редактора для PKполя)

LEFT JOIN между этим

на левой стороне («сторона вставки») у вас будет: производный столбец, в котором вы будете назначать в качестве выражения переменную OperationIDInsert И пункт назначения OLE DBдля вставки данных в таблицу CHG_Dest.Таким образом, вы вставите данные, которые должны быть вставлены в таблицу назначения, и вы это знаете, поскольку у вас есть столбец OperationIDInsert.

справа вы сделаете то же самое, но с использованием столбца OperationIDUpdate

Вы будете использовать ExecuteSQLTask в ControlFlow и будете иметь слияние SQL.На основе полей PK и полей OperationIDInsert / OperationIDUpdate вы либо вставите данные, либо обновите их.

Надеюсь, это поможет вам.Дайте мне знать, если вам нужна дополнительная информация.

0 голосов
/ 29 марта 2019

Обычный способ сделать это - вставить новые данные в пустую временную таблицу, а затем запустить команду SQL Merge (используя отдельную задачу SQL-запроса).

Команда MERGE является сверхмощной и может выполнять обновления,вставляет или даже удаляет.Смотрите полное описание слияния здесь: https://docs.microsoft.com/en-us/sql/t-sql/statements/merge-transact-sql?view=sql-server-2017

...