php oracle打印输出,php 连接oracle 导出百万级数据
1,我们一般做导出的思路就是,根据我们想要的数据,全部查询出来,然后导出来,这个对数据量很大的时候会很慢,这里我提出来的思想就是分页和缓冲实现动态输出。
2.普通的我就不说了,下面我说一下分页和内存刷新思想。代码如下:
$conn = oci_connect(‘fin_data‘, ‘fin_data‘, "(DEscriptION=(ADDRESS=(PROTOCOL =TCP)(HOST=192.168.6.65)(PORT = 1521))(CONNECT_DATA =(SID=hqygdw)))");
$sqlName = "select *
from user_tab_columns
where Table_Name=‘S_SALE_RECEIVABLE_DETAIL‘
order by column_name";
$filedName = oci_parse($conn, $sqlName);
oci_execute($filedName, OCI_DEFAULT); // 行数 OCI_DEFAULT表示不要自动commit
header(‘Content-Type: application/vnd.ms-excel;charset=gbk‘);
header(‘Content-Disposition: attachment;filename=test_‘ . time() . ‘.csv‘);
header(‘Cache-Control: max-age=0‘);
$fp = fopen(‘php://output‘, ‘a‘);
$head = array();
$i = 0;
while ($row = oci_fetch_array($filedName, OCI_ASSOC + OCI_RETURN_NULLS)) {
$head[$i] = iconv(‘utf-8‘, ‘gbk‘, $row[‘COLUMN_NAME‘]);
$i++;
}
fputcsv($fp, $head);
$selectCount = "select count(*) as counts from S_SALE_RECEIVABLE_DETAIL t ";
$resultCount = oci_parse($conn, $selectCount); // 配置SQL语句,执行SQL
oci_execute($resultCount, OCI_DEFAULT); // 行数 OCI_DEFAULT表示不要自动commit
$count = oci_fetch_array($resultCount, OCI_ASSOC + OCI_RETURN_NULLS);
//$count[‘COUNTS‘]=10;
$pageNum = 50000;
$pagePre = ceil($count[‘COUNTS‘] / $pageNum);
for ($i = 1; $i <= $pagePre; $i++) {
$pageStart = ($i - 1) * $pageNum + $pageNum;
$pageEnd = ($i - 1) * $pageNum;
$select = "SELECT *
FROM (SELECT A.*, ROWNUM RN
FROM (SELECT * FROM S_SALE_RECEIVABLE_DETAIL) A
WHERE ROWNUM <={$pageStart} )
WHERE RN >= {$pageEnd}";
$result = oci_parse($conn, $select); // 配置SQL语句,执行SQL
oci_execute($result, OCI_DEFAULT); // 行数 OCI_DEFAULT表示不要自动commit
$count =0;
while ($rowResult = oci_fetch_array($result, OCI_ASSOC + OCI_RETURN_NULLS)) {
// print_r(explode(‘,‘,$rowResult));exit;
fputcsv($fp,$rowResult);
$count++;
if($count>=$pageNum){
ob_flush();
flush();
}
}
}
fputcsv($fp, $head);
原文:http://www.cnblogs.com/kobigood/p/6936388.html
php oracle打印输出,php 连接oracle 导出百万级数据相关推荐
- oracle百万级数据导入,用Perl从oracle导出百万级数据到excel
Perl从oracle导出百万级数据到excel excel 2007 可以存放1048576行.16384列的数据:excel 2003大概是65535行 我从oracle中导出30万行60列的数据 ...
- 使用POI导出百万级数据到excel的解决方案
使用POI导出百万级数据到excel的解决方案 参考文章: (1)使用POI导出百万级数据到excel的解决方案 (2)https://www.cnblogs.com/hxun/p/11419006. ...
- php导出1万条数据excel_PHP快速导出百万级数据到CSV或者EXCEL文件
前言: 很多时候,因为数据统计,我们需要将数据库的数据导出到Excel等文件中,以供数据人员进行查看,如果数据集不大,其实很容易:但是如果对于大数集的导出,将要考虑各种性能的问题,这里以导出数据库一百 ...
- Excel导入导出百万级数据
Excel百万级数据导入导出方案 本文使用EasyExcel工作,导出格式XLSX 1.生成测试数据 这里用到的是MYSQL 5.7.31 创建表语句 CREATE TABLE `ACT_RESULT ...
- Excel怎么导出百万级数据
以前很久没碰到导出上10万数据到Excel.最近两年的业务有导出几十万数据的场景.Excel导出之前一直用NPOI导出的,NPOI的优势是不依赖Office环境.但是早期的NPOI导出操作Excel全 ...
- kettle分批处理大表数据_Kettle大量数据快速导出的解决方案(利用SQL导出百万级数据,挺快的)...
org.apache.commons commons-vfs2 2.0 org.scannotation scannotation 1.0.3 dom4j dom4j 1.6.1 pentaho-ke ...
- Java写入大字符串到oracle数据库_java程序如何提高oracle百万级数据的insert效率
业务:需要从一个数据库查询百万级数据,在java程序中插入到另一个oracle数据库中 代码: private final int persize = 1000; /** * 推送数据-流程 * @p ...
- python3连接oracle教程,python3连接oracle数据库
我这里使用的版本是python3.6 64位 ,cx_Oracle-5.3-11g.win-amd64-py3.6-2和instantclient-basic-windows.x64-18.5.0.0 ...
- arcgis读取oracle数据库,arcgis连接Oracle数据库
arcgis连接Oracle数据库 配置声明:本人的电脑是win10 64位,安装的Oracle是oracleR11gr2 64 arcgis版本位10.2 安装是在同一台电脑上. 一.首先是安装O ...
最新文章
- 编译参数-ObjC的说明
- 「娃娃分享」-常见自校检分析实例.
- 在CodeBlocks下配置GoogleTest单元测试框架
- mysql2800_mysql error 1045 (2800):。。 'root'@'localhost' (using password:YES)
- oracle03206,ORACLE数据库创建表空间ORA-03206报错的解决方案
- 华为鸿蒙系统学习笔记3-方舟编译器介绍
- Quartus II 自带Simulaiton 与 Modelsim Simulaiton功能仿真
- ProE/Creo免费插件 MCADEx Tools 4.2
- Oracle 数据库用户表大小分析
- PHP计算GPS路书,搜狗地图推出路书功能 免费而智能的GPS
- 长整数转化成16进制字符串
- ad16中如何改变栅格颜色
- kingroot权限管理_KingRoot授权管理
- python利用ffmpeg进行rtmp推流直播
- 虚拟实验工场计算机科学导论论文,计算机科学导论论文
- 生产者消费者算法的实现
- Camtasia2020视频录制软件的安装及pj顶级屏幕录像视频编辑软件
- 纳尼,五子棋AI居然这么简单?
- C# winform 编写一键排班软件时遇到的问题
- 程序员的爱情 第十三章