无论如何将数据导入SSIS,我希望PKs是顺序指导?
到目前为止,我能想出的唯一方法是创建一个临时表,该列默认newsequentialid()
将数据加载到那里,然后将其复制到正确的表中。这不是很优雅,并且不得不在我的包中添加一堆额外的层来适应它有点费时。
无论如何将数据导入SSIS,我希望PKs是顺序指导?
到目前为止,我能想出的唯一方法是创建一个临时表,该列默认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
我不使用 GUID 作为 PK,但您不能将 newsequentialid() 设置为默认值,那么任何插入到您的数据库中的内容都会使用它。