Rails:将大型模型数据导出为json

时间:2015-05-27 15:10:03

标签: ruby-on-rails json

我正在尝试导出一个超过100,000行的表

def export  
  export_data = []
  MyModel.uncached do
    MyModel.find_each do |s|
      export_data << {
        :col1 => s.col1,
        :col2 => s.col2,
        :col3 => s.col3,
        :col4 => s.col4
      }
    end
  end
  export_data = {:export_data => export_data }
  send_data export_data.to_json, :type => :json, :disposition => "attachment", :filename => "export_data.json"
end

当我使用url_path点击此操作时,处理请求需要很长时间,而且下载的文件大约为80MB。

解决此问题的正确方法是什么,以便用户无需等待请求完成?

1 个答案:

答案 0 :(得分:0)

  1. 制作原始SQL查询:Rails raw SQL example
  2. 将返回值转换为json。
  3. 另一种方式是像this这样的工具。只是谷歌类似的东西