class CsvFastImporter::Database::Postgres

Public Instance Methods

bulk_import(file, table, columns, row_index_column: nil, column_separator:, encoding:) click to toggle source
# 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) click to toggle source
# File lib/csv_fast_importer/database/postgres.rb, line 8
def verify_compatibility(configuration)
  #TODO verify postgresql version
end