Я пытаюсь оптимизировать производительность своей рейк-задачи, используя единую массовую вставку, вместо нескольких вызовов метода ActiveActiveRecord для импорта данных.Rails 4, единственная массовая вставка
Вот код, который я написал:
inserts = []
orders.each do |ord|
inserts.push "('#{ord.company}', '#{ord.number}', '#{ord.line}', '#{Time.now.to_s(:db)}', '#{ord.comment}')"
end
sql = "INSERT INTO orders (company, number, line, created_at, comment) VALUES #{inserts.join(", ")}"
ActiveRecord::Base.connection.execute(sql)
Проблема заключается в том, что comment
строки могут содержать '
характер, поэтому генерируемая строка запроса SQL будет выглядеть следующим образом:
INSERT INTO orders (company, number, line, created_at, comment) VALUES ('100', '023074', '001', '2016-07-05 11:17:38', 'TRANSFORMATION K7'), ('100', '023943', '001', '2016-07-05 11:17:38', 'BANDE PE D'AMARRAGE')
Это будет генерировать a
PG::SyntaxError: ERROR: syntax error at or near "AMARRAGE"
Как я могу обрабатывать t его?