0
export = FCSV.generate(:col_sep => l(:general_csv_separator)) do |csv|
..
end

format.csv {send_data(export), :type => 'text/csv;header=present',:filename => 'export.csv') }

我想导出大量数据。但是它带来了严重的性能问题,并且填满了我的记忆。有更好的导出 csv 的方法吗?

4

1 回答 1

1

FCSV 与 FasterCSV 相同,对吧?

处理内存的2条建议:

  1. 将输出写入临时文件,然后发送。这样你就不需要记忆中的全部内容
  2. 将输出直接流式传输给用户,而不是在内存中构建。例如,请参阅此问题的已接受答案:Streaming CSV Download from Rails 3.2 app

如果生成需要太多时间来执行,那么您将不得不分析代码然后尝试改进它......或者,将生成作为后台任务进行并允许用户稍后获取它。

于 2012-05-17T02:55:56.680 回答