2013-12-22 92 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。 –