Class: CsvFastImporter::Database::Postgres

Inherits:
Queryable
  • Object
show all
Defined in:
lib/csv_fast_importer/database/postgres.rb

Instance Method Summary collapse

Methods inherited from Queryable

#connection, #delete_all, #execute, identifier_quote_character, #identify, #initialize, #query, #transaction, #truncate

Constructor Details

This class inherits a constructor from CsvFastImporter::Database::Queryable

Instance Method Details

#bulk_import(file, table, columns, row_index_column: nil, column_separator:, encoding:) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/csv_fast_importer/database/postgres.rb', line 12

def bulk_import(file, table, columns, row_index_column: nil, column_separator:, encoding:)
  sql_columns = columns
  sql_columns = [row_index_column] + sql_columns unless row_index_column.nil?
  columns_list_query = sql_columns.map { |column| identify(column) }
                                  .join(',')

  row_index = 0
  connection.copy_data <<-SQL do
    COPY #{identify(table)} (#{columns_list_query})
    FROM STDIN
    DELIMITER '#{column_separator}'
    CSV
    ENCODING '#{encoding}';
  SQL
    while line = file.gets do
      row_index += 1
      line.prepend row_index.to_s << column_separator unless row_index_column.nil?
      connection.put_copy_data line
    end
  end
  row_index
end

#verify_compatibility(configuration) ⇒ Object



8
9
10
# File 'lib/csv_fast_importer/database/postgres.rb', line 8

def verify_compatibility(configuration)
  #TODO verify postgresql version
end