我有一个包含大约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分钟。
有什么更快的吗?
答案 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解析器中。