class RedshiftExtractor::Extractor

Public Class Methods

new(args) click to toggle source
# File lib/redshift_extractor/extractor.rb, line 3
def initialize(args)
  @args = args
end

Public Instance Methods

config() click to toggle source
# File lib/redshift_extractor/extractor.rb, line 7
def config
  @config ||= OpenStruct.new(@args)
end
run() click to toggle source
# File lib/redshift_extractor/extractor.rb, line 11
def run
  unload
  copy
end

Private Instance Methods

copier() click to toggle source
# File lib/redshift_extractor/extractor.rb, line 35
def copier
  args = {
    schema: config.destination_schema,
    table: config.destination_table,
    create_sql: config.create_sql,
    aws_access_key_id: config.aws_access_key_id,
    aws_secret_access_key: config.aws_secret_access_key,
    s3_path: config.copy_data_source,
    db_config: config.database_config_destination,
    copy_command_options: "manifest dateformat 'auto' timeformat 'auto' blanksasnull emptyasnull escape gzip removequotes delimiter '|';"
  }
  RedshiftCopier::Copy.new(args)
end
copy() click to toggle source
# File lib/redshift_extractor/extractor.rb, line 31
def copy
  copier.run
end
source_connection() click to toggle source
# File lib/redshift_extractor/extractor.rb, line 49
def source_connection
  PGconn.connect(config.database_config_source)
end
unload() click to toggle source
# File lib/redshift_extractor/extractor.rb, line 27
def unload
  source_connection.exec(unloader.unload_sql)
end
unloader() click to toggle source
# File lib/redshift_extractor/extractor.rb, line 18
def unloader
  Unload.new(
    aws_access_key_id: config.aws_access_key_id,
    aws_secret_access_key: config.aws_secret_access_key,
    s3_destination: config.unload_s3_destination,
    select_sql: config.unload_select_sql
  )
end