• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

php连接oracle导出百万级数据

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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);

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP算式验证码发布时间:2022-07-10
下一篇:
PHP定界符EOFPHP定界符EOF发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap