我正在使用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