(轉)批量插入sql語句


為了減少數據庫連接的I/O開銷,一般會把多條數據插入放在一條SQL語句中一次執行。
1、INSERT INTO TABLE(col1, col2) VALUES(val11, val12), (val21, val22),(val31,val32) ;
2、INSERT INTO TABLE(col1, col2) SELECT val11, val12 UNION ALL SELECT val21, val22 union all select val31, val32 ;
這樣的寫法是屬於復合SQL語句,表示先把兩個SELECT的結果集進行無刪減的聯合,再把聯合結果插入到TABLE中。

 

批量插入的確是比一條條插入效率高的多

批量插入如果數據量太大可能出現下面的情況:

MySQL報錯:Packets larger than max_allowed_packet are not allowed

解決方法:

在導大容量數據特別是CLOB數據時,可能會出現異常:“Packets larger than max_allowed_packet are not allowed”。

這是由於MySQL數據庫有一個系統參數max_allowed_packet,其默認值為1048576(1M)

可以通過如下語句在數據庫中查詢其值:

show VARIABLES like '%max_allowed_packet%';

修改此參數的方法是在mysql文件夾找到my.ini文件,在my.ini文件[mysqld]中添加一行:

max_allowed_packet=16777216

重啟MySQL,這樣將可以導入不大於16M的數據了,當然這數值可以根據需要作調整。

 

dt.columns不能直接循環,循環出來的是帶大括號的列名稱


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM