0

我想使用类似下面的东西,一次将 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(", ")}
4

1 回答 1

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>)

于 2012-11-05T10:30:54.063 回答