在Rails中使用预准备语句插入多行

时间:2015-05-21 08:24:25

标签: ruby-on-rails postgresql prepared-statement

我目前正在使用PostgreSQL开发RoR。

基本上,ActiveRecord满足数据检索的大部分要求。但是,在某些情况下,似乎使用一个语句会更有效率。

因此,是否可以使用一个预准备语句进行多次插入,如下所示?或者我必须自己附加原始sql语句?

INSERT INTO films (code, title, did, date_prod, kind) VALUES
    ('B6717', 'Tampopo', 110, '1985-02-10', 'Comedy'),
    ('HG120', 'The Dinner Game', 140, DEFAULT, 'Comedy'), ...;

2 个答案:

答案 0 :(得分:2)

试试这个

user_string = " ('code1','title1', 'aaa', ...), ('code2','title2'...)"

User.connection.insert("INSERT INTO films (code, title, did, date_prod, kind)VALUES"+user_string) 

答案 1 :(得分:0)

在RoR工作两年后,

有一个名为activerecord-import的宝石可以做到这一点。这是示例代码。

books = Array.new
books << Book.new(title: "Programming Ruby", author: "Dave Thomas")
books << Book.new(title: "Agile Web Development with Rails 5", author: "Sam Ruby")
Book.import books