🔖
Laravel 大量のデータ更新を一回で行う方法 insert
はじめに
エクセルの表データの一つ一つのセルをDBに保存する際、一つずつ保存していると、大量のクエリが走ることになっておりました。
そのため、一括で保存する流れに変更をしたので、その際の方法を記述しておきます。
元々
foreach($all_data as $data){
foreath($data as $info) {
Test::create(xxxx)
}
}
上記のような形でtestsテーブルにデータを保存していた。
上記の場合、foreachの中にfoeachがあり、DBに書き込む回数が多く、処理が重かった。
変更後
create_data = [];
foreach($all_data as $data){
foreath($data as $info) {
$create_data[] = [
'company' => "$info->company"
'xxx' => $info->xxx,
// 左がカラム名、右が入れたいデータを記述
]
}
}
DB::table('tests')->insert($data);
上記の記述で、一度配列を作り、その配列を一括でinsertすることで、DBに走るクエリが一回で済む。
よって、保存時の処理が軽くなる。
さいごに
insertで保存すること自体、知らなかったので、とても画期的な方法でした。。
引き続き学んだことを記載してまいります。
Discussion