在Rails中将大数据(百万行)导出为CSV

时间:2015-11-27 07:06:19

标签: ruby-on-rails ruby-on-rails-4 export-to-csv

我有一百万条记录,我想将这些数据导出为CSV格式。我使用find_each方法来获取记录。但它也需要花费太多时间来获取数据和下载CSV。我无法在应用程序中执行其他活动,因为它占用了更多内存。它只是显示我在浏览器中加载页面。

我在控制器中编写了以下代码

 def export_csv
   require 'csv'          
   lines = []
   csv_vals = []              
   User.where(status:ACTIVE).order('created_atdesc').find_each(batch_size: 10000) do |user|
   csv_vals << user.email if user.email.present?
   csv_vals << user.name if user.name.present?
   .......
   ........
   .......etc
   lines << CSV.generate_line(csv_vals)

   end
   send_data(line, type: 'text/csv; charset=iso-8859-1; header=present', \
                      disposition:  "attachment; filename=file123.csv"
 end

有没有其他方法可以加载数百万条记录并快速下载?

1 个答案:

答案 0 :(得分:0)

相关问题