簡體   English   中英

使用FasterCSV和Rails導出大量數據

[英]Exporting large amounts of data using FasterCSV with Rails

我在Rails中有一個控制器,可以使用FasterCSV生成CSV報告。 這些報告將包含大約20,000行,也許還會更多。

在下面的實現中創建csv_string時,大約需要30秒或更csv_string 有沒有更好/更快的方法來導出數據? 有什么方法可以輸出數據而不必將其全部存儲在csv_string內存中?

我當前的實現如下:

@report_data = Person.find(:all, :conditions => "age > #{params[:age]}")
csv_string = FasterCSV.generate do |csv|
    @report_data.each do |e|
        values = [e.id, e.name, e.description, e.phone, e.address]
        csv << values
    end
end
send_data csv_string, :type => "text/plain", 
    :filename=>"report.csv", :disposition => 'attachment'

我會嘗試使用find_in_batches來一次消除內存中的許多ActiveRecord對象。

http://ryandaigle.com/articles/2009/2/23/what-s-new-in-edge-rails-batched-find

我相信這應該會有所幫助,在內存中創建並包含許多ActiveRecord對象非常方便。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM