次のコントローラーコードを使用して、Rails 経由で Postgres にインポートしている 950 行の CSV があります。
io = params[:file]
trade_plans = []
CSV.foreach(io.tempfile, { :col_sep => "|" }) do |row|
if row.length == 16
trade_plans << create_trade_plan(row)
end
end
TradePlan.create(trade_plans)
def create_trade_plan(row)
number_of_shares = row[10].to_i.abs
return {
:user_id => current_user.id,
:symbol => row[2].upcase,
:symbol_long_name => row[3].upcase,
:direction => STYPE_MAP[row[5]][1],
:number_of_shares => number_of_shares,
:description => "Trade #{row[1]} on #{format_datetime(row[7], row[8])}",
:trade_status => 'closed',
:is_potential => false,
:planned_entry_price => 0,
:planned_target_price => 0,
:planned_stop_loss_price => 0,
:without_trade_plan => true
}
end
私は activerecord の一括create
メソッドを使用していますが、この回答からは Postgres では一括挿入がサポートされていないように見えます...とにかく、Rails ログで次のように表示されることを知りたいです。
Completed 200 OK in 315855ms (Views: 1280.1ms | ActiveRecord: 3341.2ms)
AR が 3.3 秒しかない場合、インポートに 950 行で 315 秒かかるのはなぜですか? いくつかのコールバックといくつかの検証がありますが、それは私にはたくさんあるようです. 1 レコードあたり 0.33 秒というのは妥当な予想ですか?