重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
优化SQL插入语句;
创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、网站制作、外贸营销网站建设、宁阳网络推广、小程序制作、宁阳网络营销、宁阳企业策划、宁阳品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供宁阳建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
比如循环一条一条插入,改成链接多个值进行插入。
将:
foreach($re as $it){
$sql="insert into table (id,name) values(".$it['id'].","."$it['name'].")";
mysql_query($sql);
}
改为:
$sql="insert into table (id,name) values";
foreach($re as $it){
$str= "'".$it['id']."','".$it['name']."'";
}
$sql .= "(".$str."),";
$sql2 = substr($sql,0,-1);
mysql_query($sql);
打开mysql的配置文件,my.ini文件,并找到:max_allowed_packet项;
将值修改大一点,具体根据自己需要修改。比如这里修改为:1G。
重启mysql服务;
5
如果运行页面提示内存溢出,可将值设大一点。
Allowed memory size of 134217728 bytes exhausted (tried to allocate 132907287 bytes)
步骤阅读
6
这样,面对千万数据导入的时候,比原来那种方法至少快好多倍。
ini_set('max_execution_time','0');
$pdo
=
new
PDO("mysql:host=localhost;dbname=test","root","123456");
$sql
=
"insert
into
test(name,age,state,created_time)
values";
for($i=0;
$i100000;
$i++){
$sql
.="('zhangsan',21,1,'2015-09-17')";
}
$sql
=
substr($sql,0,strlen($sql)-1);
var_dump($sql);
if($pdo
-
exec($sql)){
echo
"插入成功!";
echo
$pdo
-
lastinsertid();
}
试试吧。10万条1分钟多,我觉得还行
如果是用mysql数据库的话,一条语句可以插入几千条语句。类似以下语句:
insert into table_name (field1,field2) values (1,2),(2,3),(3,5),(5,6)
请查看mysql手册。
其他数据库请查阅相应手册。