mysql用php如何分批处理插入?比如前1000条数据处理结束后,再处理1001至2000条,然后再处理2001至3000条…直到全部处理完毕
程序员文章站
2022-05-26 12:57:26
...
mysql用php怎么分批处理插入?比如前1000条数据处理结束后,再处理1001至2000条,然后再处理2001至3000条……,直到全部处理完毕?
当表 member中数据量不大时,可以一次性执行:
但当member中数据量达到百万条时,说会出现执行超时的错误:
Fatal error: Maximum execution time of 30 seconds exceeded in D:
那么怎么现实分批处理呢,比如前1000条数据处理结束后,再处理1001至2000条,然后再处理2001至3000条……,直到全部处理完毕?
请高手帮写出详细代码,谢谢!因代码隐藏在后台执行,所以不要考虑用分页一页一页手工去点的方式
------解决方案--------------------
可以用 insert into mingxi (mid,mccd,mtime) select id, cca+ccb, time from member
------解决方案--------------------
当表 member中数据量不大时,可以一次性执行:
$q="select * from member'";
$r=$obj_db->simplequery($q);
while($a=$obj_db->fetchrow($r,DB_FETCHMODE_ASSOC)){
$id=$a[id];
$mccd=$a[cca]+$a[ccb];
$query="insert into mingxi (mid,mccd,mtime) values ('$id','$mccd','$time')";
$obj_db->simplequery($query);
}
但当member中数据量达到百万条时,说会出现执行超时的错误:
Fatal error: Maximum execution time of 30 seconds exceeded in D:
那么怎么现实分批处理呢,比如前1000条数据处理结束后,再处理1001至2000条,然后再处理2001至3000条……,直到全部处理完毕?
$q="select * from member'";
$r=$obj_db->simplequery($q);
while($a=$obj_db->fetchrow($r,DB_FETCHMODE_ASSOC)){
$i++;
$ep=1000;//这里假设处理完第1个1000条后再处理第二个1000条,直至处理结束?
$id=$a[id];
$mccd=$a[cca]+$a[ccb];
$query="insert into mingxi (mid,mccd,mtime) values ('$id','$mccd','$time')";
$obj_db->simplequery($query);
}
请高手帮写出详细代码,谢谢!因代码隐藏在后台执行,所以不要考虑用分页一页一页手工去点的方式
------解决方案--------------------
可以用 insert into mingxi (mid,mccd,mtime) select id, cca+ccb, time from member
------解决方案--------------------
$offs = isset($_GET['offs']) ? $_GET['offs'] : 1;
$sql = "select * from member limit $offs, 1000";
//做你该做的事
header("Location: $_SERVER[PHP_SELF]?offs=" . ($offs+1000));
相关文章
相关视频
上一篇: 求PHP+SQLServer的翻页效果,该怎么处理
下一篇: 对回复进行回复的相关有关问题