【问题标题】:duplicate primary key sql重复主键sql
【发布时间】:2018-06-26 23:12:16
【问题描述】:

这似乎与 SQL Server : Duplicate Primary Key error

我将提供一些背景信息。首先,我使用的是 SQL Express。其次,我正在使用导入和导出向导。第三,源文件是文本文件。第四,我已经成功导入了这个文件的另外两个迭代,FIRMS. 2017q2 和 2013q2 进口正常,但 2013q1 不会。原因是重复的主键错误。

我的主键是stateaccountunityrqtr。还有 25 个其他外键。示例数据如下。

可以这么说,错误消息产生了一个有问题的值。我在 excel 和 notepad ++ 中找到了该值。但是,当我挖掘时,我发现这四个的组合只发生一次。

作为进一步的测试,在 excel 中,我将四个主键值连接到一个字段中,然后在连接(组合)值中搜索重复项。 Excel 会显示结果,但是当您查看它们时,它们并不相同。每个被认为是重复的项目的单元号都不同。我注意到当name1(不是主键)有超过 1 个值时,excel(和我假设的 SQL)认为它是重复的。我只使用 excel 作为查找重复项的工具。

state   area    account    unit     yrqtr     name1     name2
  32   000001    12345    00001     201301    bakery    xyz bakery
  32   000003    12346    00001     201301    auto      xyz auto

对于 SQL,我将 201301 作为加载表导入,而不是将其附加到 FIRMS。从那里,我使用了以下代码。结果没有结果。最后,我查看了 201702 和 201302 并没有发现重复

select state,account,unit,yrqtr
from dbo.201301
Group by state,account,unit,yrqtr
having count(*) >1

那么对于我如何解决这个看似不存在重复的问题有什么想法吗?

【问题讨论】:

  • 您要向其中导入数据的表的 CREATE TABLE 定义是什么?
  • “在 excel 中,我将四个主键值连接到一个字段中” - 列出的这些值本身不是主键值,因为它们不是单独唯一的。您是说它们是复合键吗?请注意,即便如此,您发布的数据看起来也不是那么独特。
  • 最后,你确定导入数据的时候表是空的吗?如果您单独查看输入文件,那么您可能不会看到任何重复项,但是与表中已有的数据相比,重复项呢?
  • @Dai,是的,它是一个复合键,但是当四个值放在一个字符串中时,没有重复。问题是导入向导告诉我由于错误没有传输任何数据。然而,确实如此。每次我再试一次,它都会转移微量。

标签: sql duplicates primary-key sql-server-express


【解决方案1】:

获取目标表的空副本,禁用主键和外键,将所有文件导入该表并运行查询以检查重复数据。这可能会揭示数据是否在导入期间被修改。

SELECT state, account, unit, yrqtr, COUNT(*) AS dups 
FROM TableCopy 
GROUP BY state, account, unit, yrqtr 
HAVING COUNT(*) > 1

【讨论】:

  • 我执行了上面给出的步骤,但问题是虽然错误表明没有数据从 201301 传输到 FIRMS,但它正在导入跟踪量(74103 的 18 条记录)。感谢您的帮助。
猜你喜欢
  • 2014-08-24
  • 2016-08-08
  • 2017-12-20
  • 2017-02-12
  • 2013-04-11
  • 2020-03-20
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
相关资源
最近更新 更多