【问题标题】:Rails Exporting to CSV without constructing CSV in memoryRails 导出为 CSV 而不在内存中构建 CSV
【发布时间】:2011-04-11 20:44:21
【问题描述】:

Rails 2.3.5,Ruby 1.8.7。

prior question 中,有多种解决方案可以将数据导出为 CSV 格式,但其中一些似乎是在发送前先在内存中构造数据。导出大型数据集时这样做是否明智?上一个问题中的任何解决方案都可以避免这种情况。

或者,如果不在本地构建整个响应,就不可能避免构建响应,无论是在内存中还是在临时文件中?

如果后者是真的,我不会感到惊讶,因为如果在 CSV 生成中出现错误,您可能想要发回一条错误消息,但我可能生成的数据太多而无法生成内存/磁盘中的数据。

【问题讨论】:

    标签: ruby-on-rails csv


    【解决方案1】:

    您可以直接从 CSV 库(Ruby 1.8 中的 FasterCSV)进行流式传输。

    render :text => proc { |response, output|
        CSV.generate(output) do |csv|
          csv << ...
        end
    }
    

    如果您担心内存占用,也应该使用find_in_batches

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多