mala さんのMySQLにおけるbulk insert と bulk update - 金利0無利息キャッシング –
キャッシングできます - subtechのエントリーを見て, MySQL
でbulk update ができることを知り, 丁度欲しい機能だったのでとりあえず動くだけのメソッドを実装.
# User.extend BulkExecuteMethods # User.update_multi([:id, :name, :age], [[1, 'bob', 11], [2, 'mary', 21]]) # # refs # http://dev.mysql.com/doc/refman/4.1/ja/insert.html # http://subtech.g.hatena.ne.jp/mala/20090729/1248880239 module BulkExecuteMethods def update_multi(columns, values) cols = columns.map{|c| self.connection.quote_column_name(c) } ph = (['(?)'] * values.size).join(',') vals = sanitize_sql([ph, *values]) expr = cols.map{|c| "#{c}=VALUES(#{c})" …[さらに読む]