Rails如何快速从CSV中获取行数

时间:2017-11-30 14:24:16

标签: ruby-on-rails csv

我尝试了长度方法来获取行数,并且至少需要2分钟才能返回行数。长度方法快达10 000,超过10万行时速度太慢。有没有办法在2秒内获得行数,即使文件包含超过100k行?

我使用了以下代码。

file = params[:file]
f = File.open(file.path, 'r:iso-8859-1:utf-8')
csv_file = CSV.parse(f.read, :headers => true, :converters => :all, :header_converters => lambda {|h| h.to_s.include?(' ') ? h.downcase.parameterize.underscore : h})
csv_file.length

1 个答案:

答案 0 :(得分:0)

最终我找到了解决方案,CSV.read(file.path).lengthCSV.parse(f.read).length

更快