class CsvFastImporter::Import
Responsible for the main process
Public Class Methods
new(configuration)
click to toggle source
# File lib/csv_fast_importer/import.rb, line 8 def initialize(configuration) @configuration = configuration end
Public Instance Methods
db_columns(configuration)
click to toggle source
# File lib/csv_fast_importer/import.rb, line 37 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
run()
click to toggle source
# File lib/csv_fast_importer/import.rb, line 12 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
within_transaction_if(transactional) { || ... }
click to toggle source
# File lib/csv_fast_importer/import.rb, line 47 def within_transaction_if(transactional) if transactional @db.transaction do yield end else yield end end