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
34
35
36
37
|
# File 'lib/tunable/core_ext.rb', line 7
def import(columns, values, options = {})
if columns.length != values[0].length
raise ArgumentError "Column and row lengths must match!"
end
columns_array = columns.map { |column| connection.quote_column_name(column) }
values_array = values.map do |arr|
row_values = []
arr.each_with_index do |val, i|
row_values << connection.quote(val)
end
row_values.join(',')
end
values_array = values_array.map{ |str| str.gsub(EmojiFix::REGEX, " ") }
insert_method = options[:method] || 'INSERT'
sql = "#{insert_method} INTO `#{self.table_name}` (#{columns_array.join(',')}) VALUES "
if ActiveRecord::Base.connection.adapter_name.downcase == 'sqlite'
values_array.each do |vals|
row_sql = "#{sql}(#{vals})"
connection.execute(row_sql)
end
else
sql += "(#{values_array.join('),(')})"
connection.execute(sql)
end
end
|