SQL批量插入数据

时间:2025-04-03 09:51:33

SELECT * FROM Persons p
– 批量插入
INSERT INTO Persons VALUES(‘bx9’,‘z’,‘上海’,‘松江’,‘2’)
,(‘bx1’,‘z’,‘上海’,‘松江’,‘2’)
,(‘bx2’,‘z’,‘上海’,‘松江’,‘2’)
,(‘bx3’,‘z’,‘上海’,‘松江’,‘2’)
,(‘bx4’,‘z’,‘上海’,‘松江’,‘2’)
,(‘bx5’,‘z’,‘上海’,‘松江’,‘2’)
,(‘bx6’,‘z’,‘上海’,‘松江’,‘2’)
,(‘bx7’,‘z’,‘上海’,‘松江’,‘2’)
,(‘bx8’,‘z’,‘上海’,‘松江’,‘2’);
– 批量修改
第一种方法:使用insert into 插入,代码如下:

代码如下

p a r a m s = a r r a y ( ′ v a l u e ′ = &gt; ′ 5 0 ′ ) ; s e t t i m e l i m i t ( 0 ) ; e c h o d a t e ( &quot; H : i : s &quot; ) ; f o r ( params = array(&#x27;value&#x27;=&gt;&#x27;50&#x27;); set_time_limit(0); echo date(&quot;H:i:s&quot;); for( params=array(value=>50);settimelimit(0);echodate("H:i:s");for(i=0; i &lt; 2000000 ; i&lt;2000000; i<2000000;i++){
c o n n e c t m y s q l − &gt; i n s e r t ( connect_mysql-&gt;insert( connectmysql>insert(params);
};
echo date(“H:i:s”);

最后显示为:23:25:05 01:32:05 也就是花了2个小时多!

第二种方法:使用事务提交,批量插入数据库(每隔10W条提交下)最后显示消耗的时间为:22:56:13 23:04:00 ,一共8分13秒 ,代码如下:

代码如下
echo date(“H:i:s”);

$connect_mysql->query(‘BEGIN’);
p a r a m s = a r r a y ( ′ v a l u e ′ = &gt; ′ 5 0 ′ ) ; f o r ( params = array(&#x27;value&#x27;=&gt;&#x27;50&#x27;); for( params=array(value=>50);for(i=0; i &lt; 2000000 ; i&lt;2000000; i<2000000;i++){
c o n n e c t m y s q l − &gt; i n s e r t ( connect_mysql-&gt;insert( connectmysql>insert(params);
if($i%100000==0){
$connect_mysql->query(‘COMMIT’);
$connect_mysql->query(‘BEGIN’);
}
}
$connect_mysql->query(‘COMMIT’);
echo date(“H:i:s”);

第三种方法:使用优化SQL语句:将SQL语句进行拼接,使用 insert into table () values (),(),(),()然后再一次性插入,如果字符串太长,

则需要配置下MYSQL,在mysql 命令行中运行 :set global max_allowed_packet = 210241024*10;消耗时间为:11:24:06 11:25:06;

插入200W条测试数据仅仅用了1分钟!代码如下:

代码如下
s q l = &quot; i n s e r t i n t o t w e n t y m i l l i o n ( v a l u e ) v a l u e s &quot; ; f o r ( sql= &quot;insert into twenty_million (value) values&quot;; for( sql="insertintotwentymillion(value)values";for(i=0; i &lt; 2000000 ; i&lt;2000000; i<2000000;i++){
$sql.="(‘50’),";
};
s q l = s u b s t r ( sql = substr( sql=substr(sql,0,strlen($sql)-1);
c o n n e c t m y s q l − &gt; q u e r y ( connect_mysql-&gt;query( connectmysql>query(sql);