`
faiinlove
  • 浏览: 56334 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

PHP转换数据

    博客分类:
  • php
阅读更多

最近做一个数据转换,需要把大约几G的数据从数据库取出来,然后处理字段,再放回另一个表。

数据库用的Mysql 5,PHP 5.2.X,连接的远端数据库。

要求不能堵死网站的正常连接,不能让服务器崩溃。

看看我写的分页取数据代码:

//运行
transformData(50, 0);

/**
*  做数据转换
*  @param int $per 每页取多少条数据
*  @param int $total 需要处理的总数据量,为零则处理所有符合条件的数据
**/
function transformData($per = 50, $total = 0) {
    $curTime = time();  //当前时间
    $start = 0;   //开始记录
    $count = 0;   //计数器
    while (true) {
        $limit = "limit {$start},{$per}";
		$where = array('limit'=>$limit);
		//取数据
        $publishedResult = DB: :select("ID,Name,StatusType", "tb_data", $where, 'DBName');
		$where['type']=1;
        $noPublishedResult = DB: :select("ID,Name,StatusType", "tb_company", $where, 'DBName');
		$where['type']=2;
        $pausedResult = DB: :select("ID,Name,StatusType", "tb_fromDta", $where, 'DBName');

        $result = array_merge($publishedResult, $noPublishedResult);
        $result = array_merge($result, $pausedResult);

        $start += $per;

        if (!empty($result)) {
			//下面是处理每条数据
            foreach($result as $k = >$row) {
                .......
                $count++;
                if ($total != 0 && $count >= $total) {
                    break;
                }
            }
            if ($total != 0 && $count >= $total) {
                break;
            }
        } else {
            break;
        }
    }

}
 

 

更多PHP文章请看我的博客http://baicaier.iteye.com
分享到:
评论
1 楼 kakaxplus 2009-10-10  
导数据不要用php 导成mysqldump 格式文件去倒 加工 可以用 awk sed 等工具去加工

相关推荐

Global site tag (gtag.js) - Google Analytics