【发布时间】:2011-01-12 16:21:04
【问题描述】:
是否有将数据导入我希望 PK 是顺序 guid 的 SSIS?
到目前为止,我能想到的唯一方法是创建一个临时表,其列默认为newsequentialid(),在其中加载数据,然后将其复制到正确的表中。这不是很优雅,而且必须在我的包中添加一堆额外的层来适应这一点有点费时。
【问题讨论】:
标签: sql-server-2008 ssis data-import newsequentialid
是否有将数据导入我希望 PK 是顺序 guid 的 SSIS?
到目前为止,我能想到的唯一方法是创建一个临时表,其列默认为newsequentialid(),在其中加载数据,然后将其复制到正确的表中。这不是很优雅,而且必须在我的包中添加一堆额外的层来适应这一点有点费时。
【问题讨论】:
标签: sql-server-2008 ssis data-import newsequentialid
我不使用 GUID 作为 PK,但您不能将 newsequentialid() 设置为默认值,那么任何插入到您的数据库中的内容都会使用它。
【讨论】:
你看过OUTPUT clause吗?
基本上,您将插入的任何内容(包括身份字段)输出到表变量或临时表中。如果另一个表具有外键关系,则不能将其直接插入到另一个表中。每当我使用它时,我都会使用一个临时表,然后从那里插入到子表中。
这是一个使用示例:
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
【讨论】: