PHP百万级数据导出csv格式OR文本格式

废话不说,先来上一个小小的DEMO

  1. <?php
  2. header('Content-Type: text/csv');
  3. header('Content-Transfer-Encoding: binary');
  4. for($i=0;$i<500000;$i++){
  5. echo "this is a test \n";
  6. }
  7. ?>

将以上代码保存为一个PHP文件,然后执行,你会得到一个50万行记录的文件。当然扩展名是php.以上代码是分析了PhpMyAdmin后得到的超级简易版。

有了这个思路就相对简单了,首先你要超文件头。

  1. header('Content-Description: File Transfer');
  2. header('Content-Disposition: attachment; filename="' . $this->fileName . '"');
  3. header('Content-Type: text/csv');
  4. header('Content-Transfer-Encoding: binary');

然后就是遍历你的数据库,将所有的内容echo即可。如果你对csv格式不了解的话,建议先普及一下。

首页echo表头

  1. echo '列1,列2,列3';
  2. echo chr(10);

接着把所有的记录依次echo即可。

  1. foreach($array){
  2. echo 'a1,a2,a3';
  3. echo chr(10);
  4. }

上面的循环就是你遍历数据库的过程,这里不同的项目有不同的规则就不再描述了。

因为开始已经声明了文件头,所以你直接echo,当你echo完了浏览器也认为你下载完成了。