#sql-server #ssis
#sql-server #ssis
Вопрос:
Цель: получение (неперсонифицированных) данных из PROD в DEV с выбором, который мне удалось получить из источника (используя параметры в этом рабочем процессе.
Редактировать: поскольку я подготовил все данные, уже используя SSIS, конечно, использование команды SQL для перемещения (а не в SSIS) также в порядке.
Моя идея:
-
Во время экспорта этих таблиц я добавил в набор атрибут «OriginalTransactionId».
-
Я ищу все другие идентификаторы, существующие в базе данных. Набор TransactionDetail имеет (старый) transactionid. Таким образом, я могу найти новый идентификатор, используя «исходный идентификатор транзакции», и поместить его в таблицу.
-
Вот моя проблема, перенос из промежуточных таблиц в базу данных.
Все эти данные отсутствуют с новыми идентификаторами с автоматической нумерацией (начиная с 1), поскольку промежуточные таблицы были пустыми.
Как я могу переместить данные из промежуточных таблиц в таблицы с уже данными И сохранить ссылочную целостность, которую они имеют в промежуточных таблицах?
Встроена ли функциональность, если вы говорите, что хотите скопировать несколько таблиц в существующие?
Пожалуйста, я надеюсь, что кто-нибудь сможет ответить мне на этот вопрос.
Ответ №1:
Насколько я понимаю, вы хотели бы реплицировать данные из разных сред. Следуя идее репликации слиянием, вы можете заполнить свои таблицы столбцом rowguid, который будет вашим уникальным ссылкой. Поэтому вам не нужно сохранять одинаковые идентификаторы.
Абстрактная идея будет следующей:
INSERT INTO Transaction (Rowguid,,,,)
SELECT ROWGUID,,,,
FROM StageTransaction
INSERT INTO TransactionDetail (TransactionID, rowguid,,,,)
SELECT t.ID, st.rowguid, st.*
FROM StageTransaction st
INNER JOIN StageTransactionDetail sd ON st.Transaction_ID
INNER JOIN Transaction t ON st.ROWGUID = t.ROWGUID
Комментарии:
1. Я не могу расширить таблицы, которые находятся в базе данных. Я могу расширить промежуточные таблицы, но другую из «реальной» базы данных я не могу расширить для целей этой миграции данных