この記事は、PHP csv に関する関連知識を提供します。主に、PHP のスクリプト ファイルを通じて数百万のデータを csv に書き込む方法を紹介します。それを実現する方法を見てみましょう。皆さんのお役に立てれば幸いです。役に立ちます。 。
要件:
数百万のデータを CSV に書き込みます。
フレームワーク:
N 何年も前の古いフレームワークは百度では見つからないので、書き方はオリジナルに近いです
分析:
データ量が大きすぎるため、ブラウザのリクエストを使用して CSV ダウンロードに書き込むことができないため、それを取得するスクリプトを作成します
疑似コード:
//xxx - 根据自己项目替换 //调取脚本文件 exec(xxx); //脚本文件 //设置执行时间和内存 set_time_limit(0); ini_set('memory_limit', '128M'); //循环获取 $id = 0; $data = 'xxx'.'\n';//表头 while(true){ //SQL $list = xxx WHERE id > $id ORDER BY id ASC LIMIT 10000; //每次取1w防止数据库压力大,根据sql来,我这个有联表, if(empty($list)){ break; } foreach($list as $row){ $data .= '"' . $row['xxx'] . '",'; $data .= "\n"; $id = $row['id'];//更新最大id } //追加写入csv file_put_contents('xxx', mb_convert_encoding($data, 'gbk'),FILE_APPEND); unset($data);//基础不好不确定初始化能不能清内存就先unset了 $data = '';//初始化 }
基本的にはバッチで書きます。実験を始めた当初は、ループ内に file_put_contents を書かないつもりでした。後でデータ量が多い場合、数十万のデータが必要になることがわかりました。データが 1,048,576 行を超えると、$data メモリが超過します。また、100 万を超えるデータがある場合は、$data メモリが必要になります。ファイルをエクスポートするとき、Excel は 1,048,576 行を超える行を開くことをサポートしません。理論的には、$all_count パラメータを追加できます。現在のクエリの総数をカウントします。100 万を超えた場合は、新しいファイルを追加します。
より良い方法やコードの最適化がある場合は、議論してください。
推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHP で数百万のデータを CSV に書き込む方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。