我有一百万条记录,我想将这些数据导出为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
有没有其他方法可以加载数百万条记录并快速下载?
答案 0 :(得分:0)