检查 Compact Insert 语句上的重复

Jer*_*oyd 4 sql-server-2008 insert import

我不确定这是否是正确的术语“紧凑插入语句”,这正是我一直听到的。它是这样的:

INSERT INTO [tblUsers]
       ([username], [password]) 
VALUES ('user1', 'pass1'), 
       ('user2', 'pass2')
Run Code Online (Sandbox Code Playgroud)

无论如何,我们有一个超过 500 万行的表,并且即将导入一些数据,但是大约 75% 的数据被复制的可能性很高(我们从多个来源购买数据,但它们共享大约 30-40% 的数据)我们的每个来源:/)。

如果我对列执行唯一约束,则从该点开始整个插入都会失败(当然,除非包含在事务中)。

我只是不知道如何有效地做到这一点以及如何使用可以重用的代码。

gbn*_*gbn 7

为什么要直接插入 tblusers 呢?

总是使用临时表。您当然可以使用 SSIS 来获得更复杂的相同结果

INSERT INTO [staging].[Users]
       ([username], [password]) 
VALUES ('user1', 'pass1'), 
       ('user2', 'pass2')

INSERT INTO [tblUsers]
       ([username], [password]) 
SELECT DISTINCT [username], [password] --edit, added DISTINCT 
FROM [staging].[Users] SU
WHERE NOT EXISTS (SELECT * FROM [tblUsers] U WHERE ...)
Run Code Online (Sandbox Code Playgroud)

  • @gbn +1 关于分期的使用,尽管我会添加一个不同的,因为@Jeremy 说重复的变化会很大(包括在分期表中) (2认同)