ruby-on-rails - Rails 导出到 CSV 而不在内存中构建 CSV

标签 ruby-on-rails csv

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/

相关文章:

php - Codeigniter 中的报告

ruby-on-rails - rails/设计/邮件程序 : Throwing 'config.action_mailer.default_url_options' error on attempted registration

javascript - 使用 Rails 将动态哈希放入 JQuery 中

python - sqlite3 OperationalError异常

python - 使用 python 解析输入的 csv 文件以获取输出的 sql 文件

javascript - 逗号分隔的字符串

python - 从 csv 中删除重复文本

ruby-on-rails - 如何让 nginx 等待我的上游服务在 Docker Swarm 中启动?

mysql - 通过 Rails 调用带 OUT 参数的 MySQL 存储过程

ruby-on-rails - Ruby On Rails Rolify + CanCanCan + Devise 允许用户只编辑他们的帖子