在SQL Server中跳过完全相同的记录

Gli*_*kot 1 c# sql-server primary-key unique-constraint primary-key-design

我有一组文本文件,我通过C#中的SqBulkCopy导入SQL Server.有些记录出现在多个记录中,我想跳过这些记录,而不是抛出错误并停止.

对于有明确'uniqueID'/主键的情况,一切都很好 - 我使用了"WITH(IGNORE_DUP_KEY = ON)"效果很好.

但是,在这种情况下,不能确定这样的唯一ID,除了将所有字段连接在一起,或创建涉及所有字段的复合键.我试图获得一个唯一的transactionID或类似但没有可用的.有时记录是相同的,但字段中的一个数字已经改变; 在这种情况下,我希望它插入表中.

我认为有可能比创建一个针对所有领域的密钥更好的方法?如果我这样做,那就意味着日期,字符串,值等等都必须混合在一起才能形成密钥.

查询行并散列值以与我的输入行的散列进行比较是另一种想法,但性能会很糟糕我敢肯定:)

有人建议如何最好地做到这一点?

谢谢

cod*_*zen 5

如果您正在导入,您可以通过插入与目标表具有相同模式的临时表,然后对其执行SELECT DISTINCT查询,将此查询的结果插入到您的表中来创建一个对数据进行重复数据删除的阶段最终目的地表.除非你在谈论数千万行,否则这应该可以正常工作,因为它只需要运行一次.