Class: GoodData::SQLGenerator
- Inherits:
-
Object
- Object
- GoodData::SQLGenerator
- Defined in:
- lib/gooddata_datawarehouse/sql_generator.rb
Constant Summary collapse
- DEFAULT_TYPE =
'varchar(1023)'
Class Method Summary collapse
- .create_table(table_name, columns, opts = {}) ⇒ Object
- .drop_table(table_name, opts = {}) ⇒ Object
- .get_columns(table_name) ⇒ Object
- .get_row_count(table_name) ⇒ Object
- .get_table_count(table_name) ⇒ Object
- .load_data(table, csv, columns, opts = {}) ⇒ Object
- .rename_table(old_name, new_name) ⇒ Object
- .select_all(table_name, opts = {}) ⇒ Object
- .truncate_table(table_name) ⇒ Object
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 |