Class: GoodData::SQLGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/gooddata_datawarehouse/sql_generator.rb

Constant Summary collapse

DEFAULT_TYPE =
'varchar(1023)'

Class Method Summary collapse

Class Method Details

.create_table(table_name, columns, opts = {}) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/gooddata_datawarehouse/sql_generator.rb', line 14

def create_table(table_name, columns, opts={})
  not_exists = opts[:skip_if_exists] ? 'IF NOT EXISTS' : ''
  columns_string = columns.map { |c|
    c.is_a?(String) ? "#{c} #{DEFAULT_TYPE}" : "#{c[:column_name]} #{c[:data_type] || DEFAULT_TYPE}"
  }.join(', ')
  "CREATE TABLE #{not_exists} #{table_name} (#{columns_string})"
end

.drop_table(table_name, opts = {}) ⇒ Object



10
11
12
# File 'lib/gooddata_datawarehouse/sql_generator.rb', line 10

def drop_table(table_name, opts={})
  "DROP TABLE #{opts[:skip_if_exists] ? 'IF EXISTS' : ''} #{table_name}"
end

.get_columns(table_name) ⇒ Object



49
50
51
# File 'lib/gooddata_datawarehouse/sql_generator.rb', line 49

def get_columns(table_name)
  "SELECT column_name, data_type FROM columns WHERE table_name = '#{table_name}'"
end

.get_row_count(table_name) ⇒ Object



45
46
47
# File 'lib/gooddata_datawarehouse/sql_generator.rb', line 45

def get_row_count(table_name)
  "SELECT COUNT(*) FROM #{table_name}"
end

.get_table_count(table_name) ⇒ Object



41
42
43
# File 'lib/gooddata_datawarehouse/sql_generator.rb', line 41

def get_table_count(table_name)
  "SELECT COUNT(*) FROM tables WHERE table_name = '#{table_name}'"
end

.load_data(table, csv, columns, opts = {}) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/gooddata_datawarehouse/sql_generator.rb', line 22

def load_data(table, csv, columns, opts={})
  col_list = columns.join(', ')
  skip = opts[:no_header] ? '' : 'SKIP 1'
  parser = opts[:parser] || 'GdcCsvParser()'
  escape_as = opts[:escape_as] || '"'

  exc_rej = if opts[:ignore_parse_errors] && opts[:exceptions_file].nil? && opts[:rejections_file].nil?
              ''
            else
              "EXCEPTIONS '#{File.absolute_path(opts[:exceptions_file])}' REJECTED DATA '#{File.absolute_path(opts[:rejections_file])}'"
            end

  %Q{COPY #{table} (#{col_list})
  FROM LOCAL '#{File.absolute_path(csv)}' WITH PARSER #{parser}
  ESCAPE AS '#{escape_as}'
  #{skip}
  #{exc_rej}}
end

.rename_table(old_name, new_name) ⇒ Object



6
7
8
# File 'lib/gooddata_datawarehouse/sql_generator.rb', line 6

def rename_table(old_name, new_name)
  "ALTER TABLE #{old_name} RENAME TO #{new_name}"
end

.select_all(table_name, opts = {}) ⇒ Object



53
54
55
56
# File 'lib/gooddata_datawarehouse/sql_generator.rb', line 53

def select_all(table_name, opts={})
  limit = opts[:limit] ? "LIMIT #{opts[:limit]}" : ''
  "SELECT * FROM #{table_name} #{limit}"
end

.truncate_table(table_name) ⇒ Object



58
59
60
# File 'lib/gooddata_datawarehouse/sql_generator.rb', line 58

def truncate_table(table_name)
  "TRUNCATE TABLE #{table_name}"
end