【发布时间】:2018-06-26 23:12:16
【问题描述】:
这似乎与 SQL Server : Duplicate Primary Key error。
我将提供一些背景信息。首先,我使用的是 SQL Express。其次,我正在使用导入和导出向导。第三,源文件是文本文件。第四,我已经成功导入了这个文件的另外两个迭代,FIRMS. 2017q2 和 2013q2 进口正常,但 2013q1 不会。原因是重复的主键错误。
我的主键是state、account、unit 和yrqtr。还有 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