Method: #load_from_csv

Defined in:
lib/import_translations.rb

#load_from_csv(table_name, data) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/import_translations.rb', line 10

def load_from_csv(table_name, data)
  column_clause = nil
  is_header = false
  cnx = ActiveRecord::Base.connection
  ActiveRecord::Base.silence do
    reader = CSV::Reader.create(data) 

    columns = reader.shift.map {|column_name| cnx.quote_column_name(column_name) }
    column_clause = columns.join(', ')

    reader.each do |row|
      next if row.first.nil? # skip blank lines
      raise "No table name defined" if !table_name
      raise "No header defined" if !column_clause
      values_clause = row.map {|v| cnx.quote(v).gsub('\\n', "\n").gsub('\\r', "\r") }.join(', ')
      sql = "INSERT INTO #{table_name} (#{column_clause}) VALUES (#{values_clause})"
      cnx.insert(sql) 
    end
  end
end