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
100644 33 lines (25 sloc) 1.072 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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