Laravel で5,000行を超える CSV ファイルを読み取って UPSERT 処理をしたいと思っています。
同様のコードで、別の1,000行あまりの CSV は問題なく処理が出来たのですが、
5,000行を超えてメモリ不足が発生する場合は、メモリの容量を増やすしかないのでしょうか。
以下、コードです。
php
1$fp = fopen(storage_path('/') . 'hoge.csv', 'r'); 2while (($row = fgetcsv($fp, 10000)) !== FALSE) { 3 Data_hoge::updateOrCreate( 4 [ 5 "code" => $row[0], 6 "type" => $row[1] 7 ], 8 [ 9 "money" => $row[2], 10 "remarks" => $row[3] 11 ] 12 ); 13} 14fclose($fp);
code と type には複合インデックスを貼りました。
推測ですが、code が同じものが数行、並んでいるため、
同じレコードへの書き込みが頻繁に行われるのが影響しているのかなと考えています。
メモリは256MBです。
ご教示、よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー