如何在CSV中删除包含重复信息的行?

时间:2016-10-26 06:40:43

标签: ruby csv

我有一些包含许多列和数百行的CSV。列是:CompanyName, Website, Address, PhoneNumber, Email1, Email2, Email3

我需要删除所有具有重复信息的行。问题是,对于一行是重复的,它不必具有相同的所有条目,它只需要至少有一个相同的行。

以下是除CompanyName之外的几乎所有相同信息的两行示例。这只是这个问题的一个排列。

enter image description here

所以关键是基本上任意两行,它们在1列中共享相同的值,其中一行应该被删除。

因此,如果任意两行具有相同的CompanyNameEmail AddressPhone Number等,则应删除1。

最好的方法是什么?

修改1

我更希望创建一个新的,经过修改的CSV,删除重复的行。主要是因为我不想冒破坏/破坏现有CSV的风险。

修改2

请注意,我真正想要做的是避免N + 1问题,我将每行与800行CSV中的每一行进行比较。或者根据我的目标,这是不可能做到的?

1 个答案:

答案 0 :(得分:0)

我有两个建议,一个是使用sort (未经测试)

sort -u -t, -k1,1 -k2,2 (etc. one for each column you want unique) file

或者,如果要将此数据导入数据库,则可以在其上创建一个临时表,其中所有列都是唯一的,只需将所有CSV数据插入其中,忽略唯一约束异常。