【问题标题】:how to read first 5 lines of csv file using built in ruby csv如何使用内置的 ruby​​ csv 读取前 5 行 csv 文件
【发布时间】:2018-09-07 05:40:49
【问题描述】:

我的应用程序允许用户上传最大 50MB 的 csv 文件。 我想向用户展示上传文件的预览。 我可以只读取 csv 的前 5 行吗? 我目前正在使用 CSV.read 函数,显然这会读取整个文件并且速度很慢。

【问题讨论】:

标签: ruby-on-rails ruby csv ruby-csv


【解决方案1】:

CSV#foreach 返回一个可枚举的,所以只需调用Enumerable#take就可以了:

csv_preview_data = CSV.foreach(csv_path, headers: false).take(5)

【讨论】:

  • 它是否只读取前 5 行而不加载内存中的所有文件?
  • @Зелёный foreach.lazy.take(5).force 可能是懒惰的。
【解决方案2】:

我认为读取固定数量记录的最简单方法是:

preview_data = CSV.readlines(csv_path, headers: false)[0,5]

【讨论】:

  • 这会将整个 CSV 加载到内存中,避免对大文件使用此方法
猜你喜欢
  • 1970-01-01
  • 2018-11-02
  • 2019-06-01
  • 2018-09-07
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 2014-07-14
  • 1970-01-01
相关资源
最近更新 更多