Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@foxumon
Created April 29, 2016 20:19
Show Gist options
  • Star 22 You must be signed in to star a gist
  • Fork 11 You must be signed in to fork a gist
  • Save foxumon/fdb30349545944eee58c7858e6bab23c to your computer and use it in GitHub Desktop.
Save foxumon/fdb30349545944eee58c7858e6bab23c to your computer and use it in GitHub Desktop.
Export table to CSV with all attributes in rails console
require 'csv'
file = "#{Rails.root}/public/data.csv"
table = User.all;0 # ";0" stops output. Change "User" to any model.
CSV.open( file, 'w' ) do |writer|
writer << table.first.attributes.map { |a,v| a }
table.each do |s|
writer << s.attributes.map { |a,v| v }
end
end
@willhaslett
Copy link

Thanks for this! Also, it can be readily modified into a Rake task that takes the model name as an argument, like rake dump_table[Foo]

require 'csv'

desc 'Dumps all records for a passed-in model to CSV. BE CAREFUL!'
task :dump_table_to_csv, [:model] => :environment do |t, args|
  model = eval(args[:model])
  file = "#{Rails.root}/public/data.csv"
  table = model.send('all') 
  CSV.open( file, 'w' ) do |writer|
    writer << table.first.attributes.map { |a,v| a }
    table.each do |s|
      writer << s.attributes.map { |a,v| v }
    end
  end
end

@andriibureviy
Copy link

how to connect it to your project?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment