ホームページ  >  記事  >  バックエンド開発  >  PHP で数百万のデータを CSV に書き込む方法について話しましょう

PHP で数百万のデータを CSV に書き込む方法について話しましょう

藏色散人
藏色散人転載
2022-12-30 16:13:444422ブラウズ

この記事は、PHP csv に関する関連知識を提供します。主に、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 サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。