Я пытаюсь экспортировать большой объем данных из базы данных в файл csv, но это занимает очень много времени и боится, что у меня будут серьезные проблемы с памятью.Проблема с памятью с огромным CSV Export in Rails
Кто-нибудь знает, какой лучший способ экспортировать CSV без накопления памяти? Если да, можете ли вы показать мне, как это сделать? Благодарю.
Вот мой контроллер:
def users_export
File.new("users_export.csv", "w") # creates new file to write to
@todays_date = Time.now.strftime("%m-%d-%Y")
@outfile = @todays_date + ".csv"
@users = User.select('id, login, email, last_login, created_at, updated_at')
FasterCSV.open("users_export.csv", "w+") do |csv|
csv << [ @todays_date ]
csv << [ "id","login","email","last_login", "created_at", "updated_at" ]
@users.find_each do |u|
csv << [ u.id, u.login, u.email, u.last_login, u.created_at, u.updated_at ]
end
end
send_file "users_export.csv",
:type => 'text/csv; charset=iso-8859-1; header=present',
:disposition => "attachment; filename=#{@outfile}"
end
Я изменил свой код в соответствии с предлагаемыми решениями (дайте мне знать, если это похоже на то, что вы имели в виду, пожалуйста), но это все еще, кажется, занимает очень много времени. Есть еще идеи? Также вы знаете, как я мог бы передать файл csv, когда создаю его? Кажется, не может найти ничего о том, как это сделать .. спасибо! –
Примечание: я использую рельсы версии 3.0.9 –