export 大資料匯出的方法

2021-10-11 17:48:46 字數 2852 閱讀 8639

一般來說用php匯出上萬條資料的話 沒有好的方法很容易出現超時或者失敗的問題。

今天就說一下我用的方法 :

$commit=db

::connection

('資料庫')-

>

table

('表名')-

>

where

(查詢的條件)

->

get();

$count

=count

($commit);

$filename

='檔名稱.csv'

;set_time_limit(0

);ini_set

('memory_limit'

,'1024m');

//設定記憶體限制

$head=[

'序號'

,'內容1'

,'內容2'

,'內容3'];

//表頭

header

("content-disposition: attachment; filename=\""

.$filename

.".csv\"");

header()

;header

('access-control-allow-origin: *'

); (可不寫 但是可能會報跨域問題 可自行測試執行)

$fp=fopen

('php://output'

,'a');

mb_convert_variables

('gbk'

,'utf-8'

,$head);

//匯出表頭的字型設定

fputcsv

($fp

,$head);

$persize

=1000

;//每次執行1000次

$pages

=ceil

($count

/$persize);

for($i=

1;$i<=

$pages;$i

++));

unset

($db_data);

ob_flush()

;flush()

;}fclose

($fp);

exit()

;

方法二

/**

* 分批匯出

* @param request $request

*/public

function

bpout

(request $request))

->

orwhere

(function

($query))

;})-

>

distinct

('order_sn')-

>

orderby

('id'

,'asc')-

>

count()

;}else

$limit

=10000

;//限制查詢

$page

=ceil

($count

/$limit);

//頁數

header

('content-description: file transfer');

header()

;header

('content-disposition: attachment; filename="'

.$filename

.'"');

header

('expires: 0');

header

('cache-control: must-revalidate');

header

('pragma: public');

$fp=

fopen

('php://output'

,'a');

//開啟output流

ob_clean()

;$title=[

'訂單編號'

,'旺旺id'

,'使用者暱稱'

,'手機號'

,'id號'

,'資訊'

,'原因'];

mb_convert_variables

('gbk'

,'utf-8'

,$title);

fputcsv

($fp

,$title);

for($i=

0;$i<

$page;$i

++))-

>

orwhere

(function

($query))

;})-

>

distinct

('order_sn')-

>

offset

($offset)-

>

orderby

('id'

,'asc')-

>

limit

($limit)-

>

get()-

>

toarray()

;}else

foreach

($dbs

as$db

)unset

($dbs);

}ob_flush()

;flush()

;fclose

($fp);

exit()

;}

scss 中公共變數的匯出方法 export

在使用vue或者react開發專案時都會用到scss,或者less等的擴充套件語言,那麼肯定會有公共變數提取與使用,這篇文章就是記錄如何匯出公共css變數的 menutext bfcbd9 menuactivetext 409eff submenuactivetext f4f4f5 menubg 3...

大資料匯出2

經過幾天的折騰,終於把這個頑固的工程做完了,現在60萬資料40秒匯出到本地。嘗試了很多的辦法,現在放上最優秀的做法供參考。第一,優化資料表,加上相應的索引,分割槽。第二,讀庫操作。分多執行緒,採用threadpool。第三,匯出操作,1 採用aspose.cells 2 採用多檔案方式,要麼以記錄行...

POI 大資料匯出

gradle 匯入 org.apache.poi poi ooxml 3.14 poi對excel的匯出操作,一般只使用hssfworkbook以及sxssfworkbook hssfworkbook用來處理較少的資料量,sxssfworkbook用來處理超大資料量的匯出,20w資料沒什麼問題。注意...