class CsvToSqlite::SQL::Insert

Public Class Methods

new(connection:, csv_table:, name: @connection = connection) click to toggle source
# File lib/sql/insert.rb, line 7
def initialize connection:, csv_table:, name:
  @connection = connection
  @csv_table = csv_table
  @name = name
end

Public Instance Methods

run() click to toggle source
# File lib/sql/insert.rb, line 13
def run
  columns = @csv_table.headers.sort
  bar = TTY::ProgressBar.new("Inserting data [:bar] :percent", total: @csv_table.by_row.count)
  @csv_table.by_row.each do |row|
    values = columns.map { |column| row[column] }
    question_marks = ("?," * columns.size).chop!
    @connection.execute("INSERT INTO #{@name} (#{columns.join(',')}) VALUES (#{question_marks})", values)
    bar.advance(1)
  end
  bar.finish
end