Sha256: 33b25065dbd751436996a48e65c382481efce0bf9fd3874fc0939024ec5828cd
Contents?: true
Size: 1.63 KB
Versions: 3
Compression:
Stored size: 1.63 KB
Contents
require_relative './database_factory' module CsvFastImporter # Responsible for the main process class Import def initialize(configuration) @configuration = configuration end def run @db = CsvFastImporter::DatabaseFactory.build @db.verify_compatibility @configuration row_index = 0 within_transaction_if(@configuration.transactional?) do table = @configuration.destination_table columns = db_columns(@configuration) if @configuration.deletion? if @configuration.truncate? @db.truncate table else @db.delete_all table end end row_index = @db.bulk_import(@configuration.file, table, columns, row_index_column: @configuration.row_index_column, column_separator: @configuration.column_separator, encoding: @configuration.encoding) end row_index end def db_columns(configuration) file_columns = configuration.file .gets .split(configuration.column_separator) .map(&:strip) db_columns = file_columns.map(&:downcase) .map { |column| configuration.mapping[column] || column } db_columns end def within_transaction_if(transactional) if transactional @db.transaction do yield end else yield end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
csv_fast_importer-1.2.0 | lib/csv_fast_importer/import.rb |
csv_fast_importer-1.1.0 | lib/csv_fast_importer/import.rb |
csv_fast_importer-1.0.0 | lib/csv_fast_importer/import.rb |