class Transform

Transforms from an in memory table to a known SQL dialect statement

Attributes

stmt[R]

Valid SQL dialect statement

table[RW]

In-Memory source data table

target_table[RW]

Target Table in RDMS engine

values[R]

don’t use, reserved

Public Class Methods

new(src_type = "csv", target_db = "pg") click to toggle source

Currently only CSV to PostgreSQL is supported

# File lib/setl_tool/transform.rb, line 29
def initialize(src_type = "csv",
              target_db = "pg")
  @src_type = src_type
  @target_db = target_db
  if @target_table == nil
    @target_table = "#{@src_type}_import"
  end
  @values = Array.new
end

Public Instance Methods

data() click to toggle source

Execute data transformation

# File lib/setl_tool/transform.rb, line 40
def data
  case @src_type
    when "csv" then process_csv
  end
  case @target_db
  when "pg" then to_pg
  end
end

Private Instance Methods

process_csv() click to toggle source
# File lib/setl_tool/transform.rb, line 50
def process_csv
  @table.each do |row|
    values = row.map(&:inspect).join(', ')
    stmt = "#{values}"
    @values << stmt.gsub('"', "'")
  end
end
to_pg() click to toggle source
# File lib/setl_tool/transform.rb, line 59
def to_pg
  values = ""
  @values.each do |row|
    values << "("
    values << row
    values << "),"
  end
  @stmt = "INSERT INTO #{@target_table} VALUES #{values.chop!};"
end