Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Simple SQL bulk insert in Rails
# Takes a table name, and an array of hashes where keys are column names and values are values.
# Expects hashes to all contain the same keys.
def bulk_insert(table, rows)
columns = rows.first.keys
to_insert = rows.map do |d|
vals = columns.map {|k| d[k] }
ActiveRecord::Base.send(:replace_bind_variables, "(#{vals.length.times.collect {'?'}.join(',')})", vals)
end
ActiveRecord::Base.connection.execute(<<-SQL)
INSERT INTO
#{table}
(#{columns.join(',')})
VALUES #{to_insert.join(",")}
SQL
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.