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