たいやきブログ

mail to tsuyoshi.ogawa[a]gmail.com if you have some question!

Railsで大量のデータをInsertする処理するとき

http://www.coffeepowered.net/2009/01/23/mass-inserting-data-in-rails-without-killing-your-performance/

100万件くらいを一度にさばく必要のある処理を書かなくてはなり、いろいろ調べましたが、↑のサイトが大変参考になりました。

自分でもいろいろ試しましたが、10万以上のオーダの場合はBulk Insert文が現実的なようです。

こちら、以下の環境で10万件で試したらTimeoutエラーになったので、そのときは1万件を10回にわけるとか工夫が必要だと思います。

(追記)
どーやら、エラーはMySQLのmax_allowed_packetというパラメータが関係していたようです。MySQLとの通信におけるパケットサイズがここで指定されたものより大きくてエラーになってたわけでした。