Class: CsvFastImporter::Database::Postgres
- Defined in:
- lib/csv_fast_importer/database/postgres.rb
Instance Method Summary collapse
- #bulk_import(file, table, columns, row_index_column: nil, column_separator:, encoding:) ⇒ Object
- #verify_compatibility(configuration) ⇒ Object
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 |