先看代码:

<?phpset_time_limit(0);      // 设置超时ini_set('memory_limit', '100M');       // 设置最大使用的内存header("Content-type:text/csv");header("Content-Disposition:attachment;filename=" . date('Ymd'). '.csv');header('Cache-Control:must-revalidate,post-check=0,pre-check=0');header('Expires:0');header('Pragma:public');$out = fopen('php://output', 'w');$bom = chr(0xEF).chr(0xBB).chr(0xBF);     // 防止乱码$func = function ($list){$arr = [];foreach ($list as $v){$arr[$v['id']] = $v['name']}return $arr;}// todo 注意我这里都是用sql语句直接代替查询$list = select * from area;$area = $func($list);$list = select * from greate;$greate = $func($list);$list = select * from School;$School = $func($list);ob_end_clean();ob_implicit_flush(5);fputcsv($out, [$bom . '学生编号','学生姓名','所属区域','所属年级','所属学校']);// 上面整理好了对应关系do{$i = 0;$list = select * from student where id > $i order by id asc limit 10000if(!$list) break;foreach($list as $v){if($v['id'] > $i) $i = $v['id'];    // 这里可以不这样写,这些就自己优化吧fputcsv($out, [$v['student_no'],$v['name'],$area[$v['areaId']],$greate[$v['gradeId']],$School[$v['SchoolId']],]);}}while(true)fclose($out);exit();

https://github.com/wrack0001/note/blob/master/php/php%E5%AF%BC%E5%87%BA%E7%99%BE%E4%B8%87%E6%95%B0%E6%8D%AE%E5%88%B0csv.md

起因:有一次业务需求,需要导出数据库中的所有数据给接口下游,以便下游比对所有数据是否一致。

  • 这时候数据库中已经有将近100+万数据。下游希望要的数据并不是数据库的格式,格式特定样式的。这时候就需要关联上好多个表进行同时查询。
  • 最开始我是使用orm模式进行处理导对应字段,导出的数据(我做了redis缓存),整个导出过程用了半天。
  • 用phpAdmin联合查询导出数据的时候用了不到3分钟;

思考

  1. jion与orm用哪个
  2. 用orm为什么慢
  3. 用orm是否也可以很快

先说今天的主题

  • 假设现在有一个天津市学生表(有100+万数据)

student table

area table (15条数据)

greate table (12条数据)

School table (100+条数据)

要求导出所有内容到csv文件中 格式要求:学生编号,学生姓名,所属区域,所属年级,所属学校

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要

PHP进阶架构师>>>视频、面试文档免费获取​docs.qq.com

或 者关注咱们下面的知乎专栏

PHP大神进阶​zhuanlan.zhihu.com

来源“https://www.cnblogs.com/yszr/p/11976556.html”

php 数组导出csv_php导出百万数据到csv相关推荐

  1. php 数组导出csv_php导出CSV抽象类实例

    这篇文章主要介绍了php导出CSV抽象类及其用法示例,可实现循环导出功能,从而避免内存不足的问题,需要的朋友可以参考下 本文实例讲述了php导出CSV抽象类及其应用,分享给大家供大家参考.具体分析如下 ...

  2. Flink流式处理百万数据量CSV文件

    前言 最近公司让做一个'没有必要'的需求 需求针对的对象 这是同一个csv文件的不同展示形式 Excel展示形式 文本展示形式 这个csv文件中可能有数百万条数据 需求 将所有的异常数据检测出来 什么 ...

  3. php导出cvs文件英文自动分割,导出csv_php导出csv文件函数

    摘要 腾兴网为您分享:php导出csv文件函数,桌面日历,优美图,小学英语,仙乐等软件知识,以及sfc游戏合集,计划生育网上办理平台,outlookapp,虾米返利网,书链,聚米网,幼儿园带量食谱软件 ...

  4. POI报表及百万数据导入导出方案

    1.POI报表的概述 1.1 需求说明 在企业级应用开发中,Excel报表是一种最常见的报表需求.Excel报表开发一般分为两种形式:为了方便操作,基于Excel的报表批量上传数据:通过java代码生 ...

  5. POI报表入门及百万数据报表导出和读取

    POI报表概述 需求说明 在企业级应用开发中,Excel报表是一种最常见的报表需求.Excel报表开发一般分为两种形式: 为了 方便操作,基于Excel的报表批量上传数据 通过java代码生成Exce ...

  6. 百万数据报表导出:需求以及思路分析

    百万数据报表导出 需求分析 使用Apache POI完成百万数据量的Excel报表导出 解决方案 思路分析 基于XSSFWork导出Excel报表,是通过将所有单元格对象保存到内存中,当所有的Exce ...

  7. 报表技术2(百万数据导入导出,POI操作word)

    POI模板导出,操作word 导出用户详情数据(图片,公式处理) 使用模板导出用户详细信息 使用模板引擎 1.编写模板引擎 2.使用模板引擎 百万数据导出 代码实现: 百万数据导入 步骤分析: 1.自 ...

  8. POI报表入门,excel,使用事件模型解析百万数据excel报表

    POI报表入门,excel 1.pom依赖: <?xml version="1.0" encoding="UTF-8"?> <project ...

  9. python获取mysql中的数据供js调用_python 读取mysql数据至csv文件中,并发送邮件

    test 代码: #coding:utf-8 ''' Created on 2019年2月18日 @author: Administrator ''' import ConfigParser impo ...

最新文章

  1. kafka消费中的partition与消费者的关系
  2. Secret Passwords CodeForces - 1263D(并查集)
  3. DelphiX教程系列 3 - 动画 part 1
  4. jsp页面中出现“String cannot be resolved to a type”
  5. Js中Proxy对象
  6. 特斯拉两高管被爆离职,股价狂跌超过10%,马斯克宣布高层大换血
  7. miscrosoft visio 2003记
  8. python把英语句子成分字母_英语句子成分分析(最完整版)
  9. Compose | 一文理解神奇的Modifier
  10. c语言三维空间间绕坐标轴变换,浙江大学软件学院三维动画与交互技术考试概念拾掇...
  11. 说出至少4种vue当中的指令和它的用法?
  12. 正版Xshell免费使用
  13. 找回SecureCRT密码
  14. 宏碁暗影骑士擎安装双系统踩坑记录
  15. RGB接口屏和SPI接口屏的引脚
  16. 【统计学的学习方法论】
  17. VS2005 C++ 项目怎样添加“依赖”、“库目录”和“包含目录”
  18. 如何实现实时音视频聊天功能
  19. 上市公司竞争度衡量指标集1990-2020年(含数据处理过程)
  20. 第11课:JSP指令 Include指令 Taglib指令 (JSP教程 JSP入门实战教程 黄菊华Java网站开发系列教程)

热门文章

  1. android 6.0 蓝牙进程,Android6.0-蓝牙权限问题
  2. python猴子选大王讲解_关于猴子选大王的面试题
  3. java的引用类型_JAVA类型(引用类型变量和使用)
  4. Logback MDC
  5. python创建文件对象的函数_Python 文件对象常用内建方法
  6. stm32f103振镜_激光打标机运动控制器的设计与实现
  7. Apollo灰度发布
  8. SpringBoot 注入的@service为空,运行时报空指针
  9. VUE项目启动:You may use special comments to disable some warnings
  10. C# DataGridView 如何选中整行