来自csv的Ruby快速提取

时间:2015-01-07 19:04:43

标签: ruby csv

我有一个包含大约6百万行数据的CSV文件。我正在寻找仅使用特定信息提取行的最快方法。其中一个标题条目是国家/地区。我希望只提取具有国家/地区的行和美国'

require 'fastest-csv'    

line_num = 1
FastestCSV.foreach('geoIPCity.csv') do |csv_obj|

  if csv_obj[2] == 'US'
    us_ips << csv_obj
  end

 puts "read line: #{line_num}"
 line_num += 1
end

这种方式大约需要5-10分钟。

有什么更快的吗?

1 个答案:

答案 0 :(得分:0)

如果您使用可用的系统,那么

awk可能是您最好的选择。试试这个:

awk -F, '$2 ~ /US/' geoIPCity.csv

您可以通过执行以下操作在Ruby中执行此操作:

out = `awk -F, '$2 ~ /US/' geoIPCity.csv`
# all the lines of the CSV that matches

如果您需要执行某些操作,可以将这些行反馈到您喜欢的CSV解析器中。