0

次のようなものを使用して、データベースに一度に 1.000.000 ステートメントを挿入したいと考えています。しかし、私のモデルでは、他のテーブルの関連付けられたレコードを user_node_scores のすべてのレコードに挿入するbefore_create :build_a_detailがあります。それらは、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 に答える