Sha256: 27093d0ac3497880a5e02303e75b91b324c01d1c5fa5d0987b3184bf0a055054
Contents?: true
Size: 1.06 KB
Versions: 3
Compression:
Stored size: 1.06 KB
Contents
require_relative './queryable' module CsvFastImporter module Database class Postgres < Queryable identifier_quote_character '"' def verify_compatibility(configuration) #TODO verify postgresql version end 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 end end end
Version data entries
3 entries across 3 versions & 1 rubygems