浏览 1591 次
锁定老帖子 主题:PHP转换数据
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-14
最后修改:2009-09-14
最近做一个数据转换,需要把大约几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 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-10-10
导数据不要用php 导成mysqldump 格式文件去倒 加工 可以用 awk sed 等工具去加工
|
|
返回顶楼 | |