module BulkInsert::ClassMethods

Public Instance Methods

bulk_insert(*columns, values: nil, set_size:500, ignore: false, update_duplicates: false, return_primary_keys: false) { |worker| ... } click to toggle source
# File lib/bulk_insert.rb, line 7
def bulk_insert(*columns, values: nil, set_size:500, ignore: false, update_duplicates: false, return_primary_keys: false)
  columns = default_bulk_columns if columns.empty?
  worker = BulkInsert::Worker.new(connection, table_name, primary_key, columns, set_size, ignore, update_duplicates, return_primary_keys)

  if values.present?
    transaction do
      worker.add_all(values)
      worker.save!
    end
    nil
  elsif block_given?
    transaction do
      yield worker
      worker.save!
    end
    nil
  else
    worker
  end
end
default_bulk_columns() click to toggle source

helper method for preparing the columns before a call to :bulk_insert

# File lib/bulk_insert.rb, line 29
def default_bulk_columns
  self.column_names - %w(id)
end