Class: RedshiftConnector::Importer::Upsert

Inherits:
Object
  • Object
show all
Defined in:
lib/redshift-connector/importer/upsert.rb

Instance Method Summary collapse

Constructor Details

#initialize(dao:, bundle:, columns:, upsert_columns:, logger: RedshiftConnector.logger) ⇒ Upsert

Returns a new instance of Upsert.



6
7
8
9
10
11
12
# File 'lib/redshift-connector/importer/upsert.rb', line 6

def initialize(dao:, bundle:, columns:, upsert_columns:, logger: RedshiftConnector.logger)
  @dao = dao
  @bundle = bundle
  @columns = columns
  @upsert_columns = upsert_columns
  @logger = logger
end

Instance Method Details

#executeObject



14
15
16
# File 'lib/redshift-connector/importer/upsert.rb', line 14

def execute
  import
end

#importObject



18
19
20
21
22
23
# File 'lib/redshift-connector/importer/upsert.rb', line 18

def import
  @logger.info "IMPORT #{@bundle.url}* -> #{@dao.table_name} (#{@columns.join(', ')}) upsert (#{@upsert_columns.join(', ')})"
  @bundle.each_batch do |rows|
    @dao.import(@columns, rows, on_duplicate_key_update: @upsert_columns)
  end
end