【问题标题】:Rails how to get the row count from CSV fastRails如何快速从CSV获取行数
【发布时间】:2017-12-14 20:49:49
【问题描述】:

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

我使用了以下代码。

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

【问题讨论】:

标签: ruby-on-rails csv


【解决方案1】:

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

【讨论】:

  • 你的问题是关于速度的,但是如果你有超过 100k 行并使用 CSV.read 可能会出现内存问题,所以我仍在寻找更好的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-04
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多