<?php
set_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 10000
if(!$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

字段 类型 备注
id int  
student_no string 学生编号
name string 学生姓名
areaId int 所属区域的id
gradeId int 年级ID
SchoolId int 学校ID

area table (15条数据)

字段 类型 备注
id int  
name string 区域名称

greate table (12条数据)

字段 类型 备注
id int  
name string 区域名称

School table (100+条数据)

字段 类型 备注
id int  
name string 校园名称

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

php导出百万数据到csv的更多相关文章

  1. Hive导出复杂数据到csv文件

    工作中经常遇到使用Hive导出数据到文本文件供数据分析时使用.Hive导出复杂数据到csv等文本文件时,有时会遇到以下几个问题: 导出的数据只有数据没有列名. 导出的数据比较复杂时,如字符串内包含一些 ...

  2. SpringBoot图文教程10—模板导出|百万数据Excel导出|图片导出「easypoi」

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...

  3. PHP导出大量数据到csv表

    对于做后台开发的码农来说,从excel导入数据到数据库亦或者是从数据库导出数据到excel都是很常见的操作.由于经常遇到这样的场景,也因为从数据库导出数据到表格所遇到的坑有很多,所以需要另辟途径来进行 ...

  4. Php导出百万数据的优化

    导出数据量很大的情况下,生成excel的内存需求非常庞大,服务器吃不消,这个时候考虑生成csv来解决问题,cvs读写性能比excel高.测试表student 数据(大家可以脚本插入300多万测数据.这 ...

  5. python提取百万数据到csv文件

    转自:http://www.2cto.com/kf/201311/258112.html 今天有需求,需要把系统所有用户注册的id和邮箱等信息导出来提供给他们,在mysql里面count了下,大概有3 ...

  6. java 导出百万数据到excel

    @RequestMapping("export") public void write(HttpServletRequest request,HttpServletResponse ...

  7. java 分页导出百万级数据到excel

    最近修改了一个导出员工培训课程的历史记录(一年数据),导出功能本来就有的,不过前台做了时间限制(只能选择一个月时间内的),还有一些必选条件, 导出的数据非常有局限性.心想:为什么要做出这么多条件限制呢 ...

  8. 【shell mysql 导出数据到csv脚本,完美解决乱码转义符等问题】-费元星

    #!/bin/bash#@author:feiyuanxing [既然笨到家,就要努力到家]#@date:2017-12-05#@E-Mail:feiyuanxing@gmail.com#@TARGE ...

  9. C#导出数据到CSV和EXCEL文件时数字文本被转义的解决方法

    今天写C#导出datagrid数据到csv格式文件的时候,发现不管怎么尝试,凡是单元格里面全是数字的单元格,在用Excel打开的时候,都被自动转义成数据格式.数据查看极其不方便.最后google了一下 ...

随机推荐

  1. .net core 发布IIS 出现Http 500错误

    首先再webconfig中设置stdoutLogEnabled="true",然后运行之后,到logs中查看登陆错误日志. 根据不同的错误进行解决: 我的错误是发布文件夹中缺少Dw ...

  2. [日常] 免费的文本比较工具Meld使用

    需要在linux桌面环境进行文件比较的时候,发现的一款文本比较工具,并且还有windows版本.之前一直在windows下使用的是beyond compare这个的破解版,这个软件本身是收费的而且还非 ...

  3. 父组件调用子组件中的方法- this.$refs.xxx.子组件方法();

    子组件中有一个说的方法 在父组件中去调用当你点击的时候 去调用子组件中的方法 fu.vue 在父组件的方法中调用子组件的方法,很重要 this.$refs.mychild.parentHandlecl ...

  4. day73_10_18视图家族与序列化的传参。

    一.序列化传参 在视图类中实例化序列对象时,还有一个参数为context,这个参数是存放字典,将所有从前端传来的数据传输到序列化中,比如需要在序列化中校验当前用户. 传入的request参数也是一个对 ...

  5. day50_9_11 bootstarp使用

    一.下载官网. https://www.bootcss.com/ 使用3版本 https://www.bootcdn.cn/ CDN搜索网址. 配置代码: <link rel="sty ...

  6. 小测试整理(含T1 T2)

    这次测试规模较小,前两题也较水,但需要整理 T1(Jelly的男♂难题1): 从一个点出发,以四连通的方式扩散,可以走#,不能走o,走过的格子每单位时间会增加1点高度,问扩散完整间屋子需要的时间,以及 ...

  7. VS2017 Thrift编译出的Release版本的库调用报错LNK2001

    在使用thrift的过程中, 当我使用完thrift debug版本编译出来的库调试完成后, 改成release版本的时候, 就出现了如下错误, 莫名其妙啊, 同一套代码, 那只能是编译库的时候设置和 ...

  8. 【新特性速递】CSS3动画增强

    FineUIPro/Mvc/Core的下个版本(v6.1.0),我们对多个地方的CSS3动画进行了增强,使得用户体验更好. 1. 树控件启用EnableSingleExpand时,使得展开动画和折叠其 ...

  9. 解决 ubuntu 开机卡死在输入密码界面 && 键盘鼠标失灵!!

    近期不知安装了什么package,导致 ubuntu 开机后键盘鼠标一直没法用,刚开始以为是 ubuntu 桌面环境崩溃了,后来发现系统能显示连接到网络.时间也在运行,那应该就是键盘鼠标失灵了. 网上 ...

  10. 1+x 证书 Web 前端开发 MySQL 知识点梳理

    官方QQ群 1+x 证书 Web 前端开发 MySQL 知识点梳理 http://blog.zh66.club/index.php/archives/199/