首頁 >後端開發 >php教程 >聊聊php百萬資料怎麼寫入csv

聊聊php百萬資料怎麼寫入csv

藏色散人
藏色散人轉載
2022-12-30 16:13:444532瀏覽

這篇文章為大家帶來了關於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 寫在循環裡的,後來發現數據量大的時候,幾十萬數據$data 內存就超了另外如果超百萬數據的話需要做分文件匯出,excel 不支援開啟超過1048576 行,理論上就是加個$all_count 參數計目前查詢的總數,超過百萬再加新檔案。

如果有更好的方法,或者程式碼優化部分歡迎討論。

推薦學習:《

PHP影片教學

以上是聊聊php百萬資料怎麼寫入csv的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除