【发布时间】:2018-09-07 05:40:49
【问题描述】:
我的应用程序允许用户上传最大 50MB 的 csv 文件。 我想向用户展示上传文件的预览。 我可以只读取 csv 的前 5 行吗? 我目前正在使用 CSV.read 函数,显然这会读取整个文件并且速度很慢。
【问题讨论】:
标签: ruby-on-rails ruby csv ruby-csv
我的应用程序允许用户上传最大 50MB 的 csv 文件。 我想向用户展示上传文件的预览。 我可以只读取 csv 的前 5 行吗? 我目前正在使用 CSV.read 函数,显然这会读取整个文件并且速度很慢。
【问题讨论】:
标签: ruby-on-rails ruby csv ruby-csv
CSV#foreach 返回一个可枚举的,所以只需调用Enumerable#take就可以了:
csv_preview_data = CSV.foreach(csv_path, headers: false).take(5)
【讨论】:
foreach.lazy.take(5).force 可能是懒惰的。
我认为读取固定数量记录的最简单方法是:
preview_data = CSV.readlines(csv_path, headers: false)[0,5]
【讨论】: