单个质量插入到rails中的数据库中

时间:2012-11-05 10:12:44

标签: mysql ruby-on-rails

我想使用类似下面的内容,一次性插入1.000.000语句到我的数据库中。 但在我的模型中,我有一个 before_create:build_a_detail ,它会在user_node_scores中的每个记录中插入另一个表中的相关记录。它们通过has_one,belongs_to关系和外键关联。

但是如何通过单个质量插入来维持这种关联呢?

inserts = []
TIMES.times do
  inserts.push "(3.0, '2009-01-23 20:21:13', 2, 1)"
end
sql = "INSERT INTO user_node_scores (`score`, `updated_at`, `node_id`, `user_id`) VALUES #{inserts.join(", ")}

1 个答案:

答案 0 :(得分:0)

正如我所看到的,你在这里尝试做的是使用原始的sql来插入记录,所以你可以使用原始的ActiveRecord连接来执行你的sql命令,(不需要通过ActiveRecord模型回调)

例如:

class User < ActiveRecord::Base

  def raw_sql_insert(sql)
    ActiveRecord::Base.connection.execute(sql)
  end

end

然后拨打User.new.raw_sql_insert(<your insert sql>)