PHP快速导出百万级数据到CSV可能EXCEL文件
媒介: 许多时辰,由于数据统计,我们必要将数据库的数据导出到Excel等文件中,以供数据职员举办查察,假如数据集不大,着实很轻易;可是假如对付大数集的导出,将要思量各类机能的题目,这里以导出数据库一百万条数据为例,导出时刻不外20秒,值的进修的一种大数据导出方法。 一、导出思绪 必要思量处事器内存 必要思量措施运行的最大时刻 穷乏BOM头导致乱码的处理赏罚 假如导出数目过大,保举行使轮回导出,每次轮回这里以导出一万条为例,轮回100次即可所有导出 二、导出源码 下面源码将数据库信息修改本钱身的即可行使 亲测导出一百万条数据,3个字段,不外20秒 假如处事器硬件不支持一次读取一万条数据,可将轮回次数进步,导出数目低落 <?php //让措施一向运行 set_time_limit(0); //配置措施运行内存 ini_set('memory_limit', '128M'); $fileName = '测试导出数据'; header('Content-Encoding: UTF-8'); header("Content-type:application/vnd.ms-excel;charset=UTF-8"); header('Content-Disposition: attachment;filename="' . $fileName . '.csv"'); //打开php尺度输出流 $fp = fopen('php://output', 'a'); //添加BOM头,以UTF8编码导出CSV文件,假如文件头未添加BOM头,打开会呈现乱码。 fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF)); //添加导出问题 fputcsv($fp, ['姓名', '年数', '地域']); //链接数据库 $dsn = "mysql:host=127.0.0.1;port=3306;dbname=db_www;charset=utf8"; $pdo = new PDO($dsn, 'root', ''); $step = 100; //轮回次数 $nums = 10000; //每次导出数目 for($i = 0; $i < $step; $i++) { $start = $i * 10000; $sql = "SELECT uname,age,city FROM `hd_test` ORDER BY `id` LIMIT {$start},{$nums}"; $pdostatement = $pdo->query($sql); $result = $pdostatement->fetchAll(PDO::FETCH_ASSOC); foreach ($result as $item) { fputcsv($fp, $item); } //每1万条数据就革新缓冲区 ob_flush(); flush(); } 三、快速天生百万条测试数据 这里保举数据库的蠕虫复制呼吁 INSERT INTO hd_test (uname,age,city) SELECT uname,age,city FROM hd_test; 到此这篇关于PHP快速导出百万级数据到CSV可能EXCEL文件的文章就先容到这了,更多相干PHP 导出百万级数据内容请搜刮剧本之家早年的文章或继承赏识下面的相干文章但愿各人往后多多支持剧本之家! (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |