我正在使用 FasterCSV 将上传的文件导入到模型中,它非常适合小文件。然而,当我尝试导入大型数据集(21,000 行)时,需要很长时间,并且实时服务器上的浏览器超时。
这是我当前的工作代码:
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
我很想使用后台进程,但用户需要查看导入了多少行,然后才能进入系统的下一步。
所以,我想我应该使用动作分块并且只读取较少数量的行,设置一个计数器,然后用某种进度更新视图,然后使用前一个计数器作为起点再次运行该方法。
我似乎不知道如何让 FasterCSV 只读取一组行数,并为起点设置偏移量。
有谁知道如何做到这一点?或者有更好的方法来处理这个问题吗?
Try 增强现实导入
旧答案
您是否尝试过使用增强现实扩展用于批量进口?
当您向数据库插入 1000 行时,您会获得令人印象深刻的性能改进。
参观他们的website更多细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)