require 'active_record/connection_adapters/abstract_adapter'
module ActiveRecord
module ConnectionAdapters
class MysqlAdapter < AbstractAdapter
# Execute a truncate statement on the table. Note that in MySQL a truncate will *NOT* reset
# the auto_increment
def truncate(table_name)
execute("TRUNCATE #{table_name}")
end
# Bulk load the data in the specified file. This implementation always uses the LOCAL keyword
# so the file must be found locally, not on the remote server, to be loaded.
#
# Options:
# * :ignore -- Ignore the specified number of lines from the source file
# * :columns -- Array of column names defining the source file column order
# * :fields -- Hash of options for fields:
# ** :delimited_by -- The field delimiter
# ** :enclosed_by -- The field enclosure
def bulk_load(file, table_name, options={})
q = "LOAD DATA LOCAL INFILE '#{file}' INTO TABLE #{table_name}"
if options[:fields]
q << " FIELDS"
q << " TERMINATED BY '#{options[:fields][:delimited_by]}'" if options[:fields][:delimited_by]
q << " ENCLOSED BY '#{options[:fields][:enclosed_by]}'" if options[:fields][:enclosed_by]
end
q << " IGNORE #{options[:ignore]} LINES" if options[:ignore]
q << " (#{options[:columns].join(',')})" if options[:columns]
execute(q)
end
end
end
end