如何使用SSIS导入数据以获取顺序guids?

时间:2010-02-03 15:36:54

标签: sql-server-2008 ssis data-import newsequentialid

无论如何将数据导入SSIS,我希望PK是连续的guid吗?

到目前为止,我唯一能够提出的方法是创建一个临时表,其中列默认为newsequentialid(),然后将数据加载到正确的表中。这不是很优雅,并且在我的包中添加一堆额外的图层以适应这种情况需要花费一些时间。

2 个答案:

答案 0 :(得分:1)

你看过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

答案 1 :(得分:0)

我没有使用GUID作为PK,但是你不能将newsequentialid()设置为默认值,那么对数据库的任何插入都将使用它。