如何使用匹配列处理来自两个文件的CSV数据

时间:2016-10-25 14:14:32

标签: ruby csv

我有两个CSV文件,一个是3.5GB,另一个是100MB。较大的文件包含两列,我需要将其添加到另一个文件中的另外两列,以生成第三个CSV文件。

这两个文件都包含一个邮政编码列,这就是我试图匹配它们的行的方式。但是,由于文件非常大,操作很慢。我尝试过以两种方式寻找比赛但是他们都很慢:

CSV.foreach('ukpostcodes.csv') do |row|
  CSV.foreach('pricepaid.csv') do |item|
    if row[1] == item[3]
      puts "match"
    end
  end
end

firstFile = CSV.read('pricepaid.csv')
secondFile = CSV.read('ukpostcodes.csv')

post_codes = Array.new
lat_longs = Array.new

firstFile.each do |row|
  post_codes << row[3]
end

secondFile.each do |row|
  lat_longs << row[1]
end

post_codes.each do |row|
  lat_longs.each do |item|
    if row == item
      puts "Match"
    end
  end
end

由于CSV文件很大,是否有更有效的方法来处理此任务?

0 个答案:

没有答案