PHP导出大数据

保存到本地

<?php
// a db link for queries
$lh  = mysql_connect( ‘127.0.0.1‘, ‘root‘, ‘‘ );
// and a controller link
$clh = mysql_connect( ‘127.0.0.1‘, ‘root‘, ‘‘, true ); 

if ( mysql_select_db ( ‘db‘, $lh ) )
{
    $qry    = "SELECT * FROM table limit 200000000";
    $rh     = mysql_unbuffered_query( $qry, $lh );
    $thread = mysql_thread_id ( $lh );

    $fp = fopen(‘file.csv‘, ‘w‘);
    // 计数器
    $cnt = 0;
    // 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
    $limit = 100000;
    while ( $res = mysql_fetch_row( $rh ) )
    {
        $cnt ++;
        if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题
            ob_flush();
            flush();
            $cnt = 0;
        }
        fputcsv($fp, $res);
    }
    mysql_query( "KILL $thread", $clh );
    fclose($fp);
    unset($fp);
}
unset($lh, $clh);
?>

直接下载:

<?php

header(‘pragma:public‘);
header(‘Content-type:application/vnd.ms-excel;charset=utf-8;name="abc.csv"‘);
header("Content-Disposition:attachment;filename=abcd.csv");//attachment新窗口打印inline本窗口打印 

// a db link for queries
$lh  = mysql_connect( ‘127.0.0.1‘, ‘root‘, ‘‘ );
// and a controller link
$clh = mysql_connect( ‘127.0.0.1‘, ‘root‘, ‘‘, true ); 

if ( mysql_select_db ( ‘db‘, $lh ) )
{
    $qry    = "SELECT * FROM table limit 200000000";
    $rh     = mysql_unbuffered_query( $qry, $lh );
    $thread = mysql_thread_id ( $lh );

    $fp     = fopen(‘php://output‘, ‘a‘);
    // 计数器
    $cnt = 0;
    // 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
    $limit = 100000;
    while ( $res = mysql_fetch_row( $rh ) )
    {
        $cnt ++;
        if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题
            ob_flush();
            flush();
            $cnt = 0;
        }
        fputcsv($fp, $res);
    }
    mysql_query( "KILL $thread", $clh );
    fclose($fp);
    unset($fp);
}
unset($lh, $clh);
?>
时间: 2024-11-05 02:31:17

PHP导出大数据的相关文章

phpmyadmin导入导出大数据文件的办法

在phpmyadmin的使用中,经常需要进行导入导出数据库的操作. 但是在导入导出大型数据库文件的时候经常会只是部分导出或者部分导入. 或者是导入导出不成功. 原因就是服务器和php.mysql限制了导出导入数据库文件的大小.而改相应的配置又十分繁琐,所以这里提供一个绕过导出导入有大小限制的办法. 这个思路就是直接在服务器上面进行导出导入.过程如下 将phpMyAdmin/config.sample.inc.php 文件改名为phpMyAdmin/config.inc.php并打开编辑 * Di

php导出大数据scv

1.我系统要导出30w的数据,刚开始我使用的是: ini_set('memory_limit', '1024M');set_time_limit(0); header("Content-type:text/csv");header("Content-Disposition:attachment;filename=收款明细.csv");header('Cache-Control:must-revalidate,post-check=0,pre-check=0');he

关于poi导出大数据量EXCEL导出缓慢的解决方案--生成xml格式的表格文件

今天遇到了一个POI导出EXCEL文件结果文件大小太大导致系统运行缓慢的问题.想到了使用输出XML格式的表格来完成. 首先,我们需要理解一下为什么POI导出EXCEL文件会导致文件大小变大.最主要的原因应该是POI变成中经常会对无关的单元格设置属性.例如:一个EXCEL工作表的最大列数为256,我们只使用10列.而编程时经常会将256列全部渲染格式,造成很大的资源浪费.当然应该还有其他很多原因也会造成表格变大. 使用这个方案的前提是对于表格的格式要求不高,因为使用的是自己的工具,没有POI优化了

php使用fputcsv进行大数据的导出

为了实验大数据的导出,我们这里先自已创建一张大表,表结构如下: CREATE TABLE `tb_users` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID', `name` varchar(32) DEFAULT '' COMMENT '用户名', `age` tinyint(3) DEFAULT '0' COMMENT '用户年龄', `desc` varchar(255) DEFAULT '' COMMENT '

POI实现大数据EXCLE导入导出,解决内存溢出问题

使用POI能够导出大数据保证内存不溢出的一个重要原因是SXSSFWorkbook生成的EXCEL为2007版本,修改EXCEL2007文件后缀为ZIP打开可以看到,每一个Sheet都是一个xml文件,单元格格式和单元格坐标均用标签表示.直接使用SXSSFWorkbook来到导出EXCEL本身就是POI为了大数据量导出而量身定制的,所以导出可以直接使用SXSSFWorkbook方式. 为了保险起见可以采用多Sheet的方式保证内存不溢出.需要注意的是Sheet名称不能重复:下载的时候需要定义好返回

导出查询数据(大数据量)

1.右击数据库,"任务"--"导出数据" 2.向导页点击"下一步",然后录入登陆信息,再点击"下一步" 3.选择导出类型及路径,然后点击"下一步"(如:Excel文档) 4.选择数据源,直接从表或试图中导出,或者通过sql语句查询导出,然后"下一步".(此处sql查询为例) 5.录入查询语句,然后"下一步"(可分析sql语句是否有效) 6.之后的步骤就是一路"

PHPExcel导出大量数据超时及内存错误解决方法(转)

转自:http://lhdst-163-com.iteye.com/blog/2149653 PHP导出excel相对很多童鞋都碰到了,使用phpexcel类也确实方便,但导出大数据的时候就没那么简单了,常常会伴随一些超时或内存溢出的问题,下面就给大家介绍一些方法,共同学习,共同进步... PHPExcel是一个很强大的处理Excel的PHP开源类,但是很大的一个问题就是它占用内存太大,从1.7.3开始,它支持设置cell的缓存方式,但是推荐使用目前稳定的版本1.7.6,因为之前的版本都会不同程

关于大数据查询与导出

上周末,帮朋友处理了一个关于大数据的查询与导出问题,整理一下,在此记录一下用以备忘,同时也为有类似需要的朋友提供一个参考. 背景: 数据库服务使用: SqlServer2008 ; 查询的流水表总数据量约在 800W 条左右 ; 需要展示的字段需要从流水表+基础资料表中 导出需要 加载指定模板 ; 要求查询响应时间<=2s,导出<=10s; (当然每次仅处理符合条件的数据) . 该系统运行了大概2年时间,系统刚上线的时候,各项性能指标还ok,目前该功能点查询和导出时直接卡死. 该项目为 常规

java 导出Excel 大数据量

出处: http://lyjilu.iteye.com/ 分析导出实现代码,XLSX支持: /** * 生成<span style="white-space: normal; background-color: #ffffff;">XLSX</span>,2007版本的excel,每个sheet无6.5W的行数限制,但是到了一定数量,可能内存溢出, * 次方法适合在预计10W以下的数据导出时使用,本机测试,14W可以导出.列数量在8列左右 * * @param