2013-12-22 66 views
2

数据集有重复的记录。同一联系人可以有多个 副本。删除并合并CSV文件中的重复记录

如何删除重复的记录,并为每个 名称创建一个具有最大可能字段的单个记录。

样品输入文件:

FN, LN, phone1,  phone2,  email,  city 
Matt, x,  9800000000,   ,    , NYC 
Matt, ,  9800000001, 8822334490,    , 
Matt, x,  9845, 9800000000,    , 
Matt, ,  9800000000,   , [email protected], NYC 
Matt, x,    , 9845, [email protected], NYC 
Matt, x,  9845, 9800000000,    , NYC 
Matt, y,  9800000001,   ,    , NYC 
kyle, z,  8759235755,   ,    , NJ 

样本输出:

FN, LN, phone1,  phone2, email,   city 
Matt, x, 9800000000, 9845, [email protected], NYC 
Matt, y, 9800000001, 8822334490,    , NYC 
kyle, z, 8759235755,   ,    , NJ 
+0

是否有实际的字段之间的空白,还是你添加它的清晰度?此外,构建合并记录的规则还不清楚 - 您说“每个名称只有一个记录”,但是有两个“Matt”,而“Matt,y”的合并记录包含的内容不存在他在样本输入中。 –

+0

不错的问题... +1 –

+0

@TimPietzcker:为了清晰起见,我在空字段中添加了空格。 first_name是必填字段,其余全部是可选字段,同样可以有多个副本用于同一联系人。 – user3127188

回答

0

已经看过了find_or_create_by

的find_or_create_by方法检查与属性的记录是否存在。如果没有,则创建被调用。我们来看一个例子。

假设您想查找名为'Andy'的客户端,并且如果没有,请创建一个。您可以通过运行这样做:

Client.find_or_create_by(first_name: 'Andy') 
# => #<Client id: 1, first_name: "Andy", orders_count: 0, locked: true, created_at: "2011-08-30 06:09:27", updated_at: "2011-08-30 06:09:27"> 

+0

此方法在'ActiveRecord'中可用。我没有看到问题Rails。 –