Как импортировать данные с помощью SSIS для последовательных направляющих? - PullRequest
1 голос
/ 03 февраля 2010

Есть ли какой-либо способ импортировать данные в SSIS, где я ожидаю, что PK будут последовательными направляющими?

Единственный метод, который мне удалось найти, - это создать временную таблицу со столбцом.по умолчанию newsequentialid() загружает данные туда, затем копирует их в правильную таблицу.Это не очень элегантно и требует некоторого времени, чтобы добавить несколько дополнительных слоев в мои пакеты, чтобы приспособиться к этому.

Ответы [ 2 ]

1 голос
/ 16 февраля 2010

Вы смотрели на предложение 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
0 голосов
/ 03 февраля 2010

Я не использую GUID в качестве PK, но вы не можете установить newsequentialid () в качестве значения по умолчанию, тогда любая вставка в вашу базу данных будет использовать это.

...