1、首先創(chuàng)建要插入100萬(wàn)數(shù)據(jù)的表格,隨機(jī)產(chǎn)生數(shù)字。

創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,公司以網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、系統(tǒng)開(kāi)發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計(jì)等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶(hù)超過(guò)千家,涉及國(guó)內(nèi)多個(gè)省份客戶(hù)。擁有多年網(wǎng)站建設(shè)開(kāi)發(fā)經(jīng)驗(yàn)。為企業(yè)提供專(zhuān)業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計(jì)、宣傳推廣等服務(wù)。 通過(guò)專(zhuān)業(yè)的設(shè)計(jì)、獨(dú)特的風(fēng)格,為不同客戶(hù)提供各種風(fēng)格的特色服務(wù)。
2、其次創(chuàng)建存儲(chǔ)過(guò)程,并向表中插入數(shù)據(jù),調(diào)用存儲(chǔ)過(guò)程進(jìn)行插入數(shù)據(jù),插入300萬(wàn)條數(shù)據(jù),且分幾次插入。
3、最后導(dǎo)出數(shù)據(jù)到csv,使用函數(shù)selectxxxintooutfile,其中outfile后面的路徑可以是Windows或macOS或者Linux。
php導(dǎo)出數(shù)據(jù)excel有專(zhuān)門(mén)的庫(kù),當(dāng)導(dǎo)出少量數(shù)據(jù)的時(shí)候速度很快,但是當(dāng)數(shù)據(jù)量大的時(shí)候就會(huì)存在服務(wù)器內(nèi)存不夠之類(lèi)的。
所以在導(dǎo)出大量數(shù)據(jù)的時(shí)候就應(yīng)該分頁(yè)查詢(xún)數(shù)據(jù),避免服務(wù)器宕機(jī)。正好PHP提供了fputcsv函數(shù)可以將數(shù)據(jù)寫(xiě)入到csv文件中。
這樣我們就可以使用PHP對(duì)數(shù)據(jù)進(jìn)行分頁(yè)查詢(xún),再寫(xiě)入到csv文件中。
php導(dǎo)出大量數(shù)據(jù)到Excel,可以通過(guò)生成多個(gè)Excel文件,然后壓縮成壓縮包解決。
方案是:假如我們數(shù)據(jù)庫(kù)有10w條數(shù)據(jù),每2000條數(shù)據(jù)生成一個(gè)Excel文件,這樣每次只要從數(shù)據(jù)庫(kù)里查詢(xún)出2000條數(shù)據(jù)即可,一定要分頁(yè)去查詢(xún)。
原因:主要是數(shù)據(jù)庫(kù)性能和寫(xiě)文件性能。分頁(yè)查詢(xún)可以解決數(shù)據(jù)庫(kù)壓力的問(wèn)題, 生成多個(gè)文件可以解決單個(gè)文件太大,后期維護(hù)Excel文件的問(wèn)題。
要注意的:
1. 在導(dǎo)出邏輯文件開(kāi)頭,一定要聲明 set_time_limit(0) ,防止腳本超時(shí);
2. 每個(gè)文件生成后,適當(dāng)?shù)膕leep一下,讓程序休息一下下;
3. 因?yàn)橐淮螌?dǎo)出最后要將生成的多個(gè)Excel文件打包成一個(gè)壓縮包,所以要?jiǎng)h除掉生成的Excel文件,節(jié)省服務(wù)器存儲(chǔ)空間;
分享題目:php處理百萬(wàn)數(shù)據(jù)導(dǎo)出 php處理百萬(wàn)數(shù)據(jù)導(dǎo)出方法
本文網(wǎng)址:http://chinadenli.net/article24/ddgcoce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、全網(wǎng)營(yíng)銷(xiāo)推廣、企業(yè)網(wǎng)站制作、搜索引擎優(yōu)化、網(wǎng)站改版、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容