class RedshiftConnector::Importer::InsertDelta

Public Class Methods

new(dao:, columns:, delete_cond:, logger: RedshiftConnector.logger) click to toggle source
# File lib/redshift_connector/importer/insert_delta.rb, line 6
def initialize(dao:, columns:, delete_cond:, logger: RedshiftConnector.logger)
  @dao = dao
  @columns = columns
  @delete_cond = delete_cond
  @logger = logger
end

Public Instance Methods

delete_rows(cond_expr) click to toggle source
# File lib/redshift_connector/importer/insert_delta.rb, line 18
def delete_rows(cond_expr)
  @logger.info "DELETE #{@dao.table_name} where (#{cond_expr})"
  @dao.connection.execute("delete from #{@dao.table_name} where #{cond_expr}")
  @logger.info "deleted."
end
execute(bundle) click to toggle source
# File lib/redshift_connector/importer/insert_delta.rb, line 13
def execute(bundle)
  delete_rows(@delete_cond)
  import(bundle)
end
import(bundle) click to toggle source
# File lib/redshift_connector/importer/insert_delta.rb, line 24
def import(bundle)
  @logger.info "IMPORT #{bundle.url}* -> #{@dao.table_name} (#{@columns.join(', ')})"
  bundle.each_batch do |rows|
    @dao.import(@columns, rows)
  end
end