1 .插入大批量数据时,要先保证数据库的可以接收来自server端的数据
set global max_allowed_packet = 2*1024*1024*10;
查看目前配置
show VARIABLES like '%max_allowed_packet%';
修改方法:
1) 方法1
可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。
max_allowed_packet = 20M
如果找不到my.cnf可以通过
mysql --help | grep my.cnf
去寻找my.cnf文件。
2) 方法2
(很妥协,很纠结的办法)
进入mysql server
在mysql 命令行中运行
set global max_allowed_packet = 2*1024*1024*10
然后关闭掉这此mysql server链接,再进入。
show VARIABLES like '%max_allowed_packet%';
查看下max_allowed_packet是否编辑成功
2.
<pre name="code" class="php">$values=array();
// print_r($array);
foreach($array as $k => $v)
{
if($v['Enabled']==1)
{
$values[] = $v['Id'] .",'".$v['LoginName'] . "', '" . $v['EnglishName'] . "',' "
. $v['ChineseName']. "',' " . $v['FullName']."','". $v['Gender']."','"
. $v['Birthday']."',". $v['DepartmentId'].",'". $v['DepartmentName']."',"
. $v['OfficialId'].",'". $v['OfficialName']."',". $v['GroupId'].",'"
. $v['GroupName']."',". $v['PostId'].",'". $v['PostName']."',". $v['TypeId'].",'"
. $v['TypeName']."',". $v['StatusId'].",'". $v['StatusName']."',". $v['WorkDeptId'].",'"
. $v['WorkDeptName']."','". $v['MobilePhoneNumber']."','". $v['BranchPhoneNumber']."','"
. $v['T']."','true'";
}
for($i=1;$i<$sum/10000+1;$i++)
{
$sql="INSERT IGNORE INTO bas VALUES ";
for($j=($i-1)*10000;$j<$i*10000&&$j<$sum;$j++)
{
$sql=$sql."(".$values[$j]."),";
}
$sql=substr($sql,0,-1);
$exec_res=$this->db->query($sql);
}
每次插入1w条。