我正在使用FasterCSV將上傳的文件導入到模型中,它對於小文件非常適用。但是,當我嘗試導入一個大型數據集(21,000行)時,它需要很長時間,並且我在實時服務器上看到了瀏覽器超時。在Rails中批量導入CSV?
這是我目前的工作代碼:
logcount=0
Attendee.transaction do
FCSV.new(file, :headers => true).each do |row|
row[1] = Date.strptime(row[1], '%m/%d/%Y')
record = @event.attendees.new(:union_id => row[0], :dob => row[1], :gender => row[2])
if record.save
logcount += 1
end
end
end
我喜歡使用一個後臺進程,但用戶需要看到有多少行是進口的,纔可以移動到系統的下一步。
所以,我在想我應該使用action chunking,只讀取較少的行數,設置一個計數器,然後用某種進度更新視圖,然後再次使用前一個計數器作爲起點運行該方法。
我似乎無法看到如何讓FasterCSV只讀取一定數量的行,並且還爲起始點設置偏移量。
有誰知道如何做到這一點?還是有更好的方法來處理這個問題?
對於任何人在看這個死鏈接:https://web.archive.org/web/20080729041651/http://www.continuousthinking.com/tags/arext – MaicolBen 2017-04-26 13:29:40