我有4个表,范围从1000万行到2500万行。我首先创建了一个表,其中一个表以serial_no作为主键,其余表将两列的组合作为唯一约束。
然后我将大的csv文件插入到其中,成功了。然后,我使用upsert技术添加了更多记录,效果也很好。但是当我随机选择特定的序列号时,我注意到其中一些具有重复的行。为了确保我随后按serial_no分组并按count(*)> 1进行过滤,并且可以肯定的是,即使有适当的约束,很多记录也是重复的。这可能是什么问题?
我读了以前的一篇文章,其中说一个较旧的Postgres版本(即9.2及更早版本)有一个错误,但据说已经修复了。我正在使用版本10。此外,所有表在各自的唯一约束上都有重复的记录。
答案 0 :(得分:0)
环顾四周后,我找到了答案。与可能面临类似问题的其他人分享。
所以问题是我在使用继承来创建表。我以前从未处理过继承问题,因此当我使用pgAdmin4接口创建表时,我选择从其他表继承,以为创建具有相似列的相似表只是捷径。嗯,事实并非如此,原来在继承的表之间没有强制执行主键。
我最终删除了所有表,并从头开始而不使用继承。