我正在构建一个我使用Heroku部署的rails应用程序,我需要能够导入和处理大型csv文件(5000多行)。
使用内置的ruby csv解析器在控制器中执行它需要30秒以上并导致Heroku dyno超时
我正在考虑将csv放入数据库,然后使用delayed_job处理它,但这种方法仅限于4200行。
我对包含该文件的列使用mysql和longtext,因此db应该能够处理它
有关此用例的任何想法吗?
答案 0 :(得分:2)
是导入文件的示例代码
n = SmarterCSV.process(params[:file].path) do |chunk|
Resque.enqueue(ImportDataMethod, chunk)
end
读取文件后,将数据记录传递给resque,然后在后台导入(如果使用上面的rails 4.2,则可以与rails active job结合使用)