Railsで大量のデータをInsertする処理するとき
100万件くらいを一度にさばく必要のある処理を書かなくてはなり、いろいろ調べましたが、↑のサイトが大変参考になりました。
自分でもいろいろ試しましたが、10万以上のオーダの場合はBulk Insert文が現実的なようです。
こちら、以下の環境で10万件で試したらTimeoutエラーになったので、そのときは1万件を10回にわけるとか工夫が必要だと思います。
- MacBook Pro Retina
- DBはMySQL RDSマイクロインスタンス @ Tokyo Region
(追記)
どーやら、エラーはMySQLのmax_allowed_packetというパラメータが関係していたようです。MySQLとの通信におけるパケットサイズがここで指定されたものより大きくてエラーになってたわけでした。