public
Description: Ruby on Rails plugin that leverage the MySql "LOAD DATA IN FILE" feature to quickly insert large amounts of data into a table
Homepage: http://paolodona.com/tags/import_with_load_data_in_file
Clone URL: git://github.com/paolodona/import_with_load_data_in_file.git
name age message
file .gitignore Tue Aug 19 08:35:35 -0700 2008 ignored svn folders [Paolo Dona]
file MIT-LICENSE Tue Aug 19 08:33:21 -0700 2008 Initial commit [Paolo Dona]
file README Wed Oct 15 12:26:57 -0700 2008 updated readme [Paolo Dona]
file Rakefile Tue Aug 19 08:33:21 -0700 2008 Initial commit [Paolo Dona]
file init.rb Tue Aug 19 08:33:21 -0700 2008 Initial commit [Paolo Dona]
file install.rb Tue Aug 19 08:33:21 -0700 2008 Initial commit [Paolo Dona]
directory lib/ Thu Oct 16 01:22:38 -0700 2008 do not raise an exception if tmpdir is not chmo... [Paolo Dona]
directory test/ Wed Oct 15 10:57:50 -0700 2008 added :local option to turn off LOCAL [Paolo Dona]
file uninstall.rb Tue Aug 19 08:33:21 -0700 2008 Initial commit [Paolo Dona]
README
ImportWithLoadDataInFile
========================

This plugin allows you to bulk import records into a table using mysql's 'LOAD DATA INFILE' feature.
It is very similar to ar-extensions import feature, but it seems to be about 30% faster.

all it does is:
  - take a list of columns and a 2D Array with the column values
  - create a tempfile and put a csv representation of the data in it
  - call mysql's LOAD DATA INFILE against the temp file

Example
=======

# Table name: users
#
#  id         :integer(11)     not null, primary key
#  name       :string(20)     
#  surname    :string(32)      
# 
class User < ActiveRecord::Base
  # you need to include this module
  include ImportWithLoadDataInFile
end

cols = [:name, :surname]
vals = [["paolo", "dona"], ["james", "dean"]]
User.import_with_load_data_infile(cols, vals) # this generates a LOAD DATA LOCAL INFILE statement

# if your db is on the same machine of the app server, you can switch off the LOCAL flag
User.import_with_load_data_infile(cols, vals, :local => false) # this generates LOAD DATA INFILE