rails 2.3.5, ruby 1.8.7。
在 prior question ,以CSV格式导出数据有多种解决方案,但其中一些似乎在发送之前在内存中构造数据。这在导出大型数据集时是否明智?上一个问题中的任何解决方案是否避免了这种情况。
或者,如果不在本地(在内存或临时文件中)构建整个响应,就不可能避免构建响应?
如果后者是真的,我不会感到惊讶,因为如果 CSV 生成中有错误,您可能想要发送一条错误消息,但我可能会生成太多数据而不想在内存中生成数据/在磁盘上。
最佳答案
您可以直接从 CSV 库(Ruby 1.8 中的 FasterCSV)进行流式传输。
render :text => proc { |response, output|
CSV.generate(output) do |csv|
csv << ...
end
}
您还应该使用 find_in_batches如果您担心内存占用。
关于ruby-on-rails - Rails 导出到 CSV 而不在内存中构建 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5627337/