Как импортировать данные с помощью SSIS для последовательных направляющих?
Есть ли какой-нибудь способ импортировать данные в SSIS, где я ожидаю, что PK будут последовательными направляющими?
Единственный способ, который мне удалось найти, - это создать временную таблицу со столбцом по умолчанию newsequentialid()
загружая данные туда, затем копируя их в правильную таблицу. Это не очень элегантно и требует много времени, чтобы добавить несколько дополнительных слоев в мои пакеты, чтобы приспособиться к этому.
2 ответа
Я не использую GUID в качестве PK, но вы не можете установить newsequentialid() в качестве значения по умолчанию, тогда любая вставка в вашу базу данных будет использовать это.
Вы смотрели на предложение OUTPUT?
По сути, вы выводите все, что было вставлено (включая поля идентификаторов) в переменную таблицы или временную таблицу. Вы не можете вставить его непосредственно в другую таблицу, если другая таблица имеет отношение внешнего ключа. Всякий раз, когда я использовал его, я использовал временную таблицу, а затем вставлял ее в дочернюю таблицу.
Вот пример его использования:
DECLARE @roles TABLE (
SecurityRoleId int
)
INSERT dbo.SecurityRole (
SecurityRoleName,
SecurityRoleDescription,
LastUpdatedGuid
)
OUTPUT
INSERTED.SecurityRoleId
INTO @roles
SELECT
SecurityRoleName,
SecurityRoleDescription,
NEWID()
FROM @SecurityRole
INSERT INTO dbo.SecurityRoleDtl (
SecurityRoleId,
MemberSecurityRoleId
)
SELECT
1,
SecurityRoleId
FROM @roles