how to read first 5 lines of csv file using built in ruby csv

3.2k views Asked by At

My application lets user to upload csv file with maximum of 50MB. I wanted to show the user the preview of the uploaded file. Can I read only the first 5 lines of csv? I am currently using CSV.read function, obviously this will read the entire file and is slow.

2

There are 2 answers

2
Aleksei Matiushkin On BEST ANSWER

CSV#foreach returns an enumerable, so just call Enumerable#take on it:

csv_preview_data = CSV.foreach(csv_path, headers: false).take(5)
1
John Baker On

The simplest ways to read a fixed number of records for my opinion would be:

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