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

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

藏色散人
發布: 2023-04-11 09:36:01
轉載
4526 人瀏覽過

這篇文章為大家帶來了關於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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板