如何在MySQL中进行批量插入

我有许多logging需要input到表中。 在查询中执行此操作的最佳方法是什么? 我应该做一个循环,每次迭代插入一个logging? 或者,还有更好的方法?

从MySQL手册

使用VALUES语法的INSERT语句可以插入多行。 为此,请包含多个列值列表,每个列表值都包含在括号内,并用逗号分隔。 例:

 INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9); 

大多数情况下,您不是在MySQL客户端中工作,而是应该使用适当的API批量插入。

例如在JDBC中:

 connection con.setAutoCommit(false); PreparedStatement prepStmt = con.prepareStatement("UPDATE DEPT SET MGRNO=? WHERE DEPTNO=?"); prepStmt.setString(1,mgrnum1); prepStmt.setString(2,deptnum1); prepStmt.addBatch(); prepStmt.setString(1,mgrnum2); prepStmt.setString(2,deptnum2); prepStmt.addBatch(); int [] numUpdates=prepStmt.executeBatch(); 

http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/tjvbtupd.htm

 Insert into table(col1,col2) select col1,col2 from table_2; 

请转到:http://dev.mysql.com/doc/refman/5.5/en/insert.html

加载数据infile查询是更好的select,但像godaddy一些服务器限制这个选项共享主机,所以只有两个选项剩下一个插入logging每个迭代或批量插入,但批量插入有其限制的字符,如果您的查询超过这个在mysql中设置的字符数然后你的查询将崩溃,所以我build议插入数据块批量插入,这将最大限度地减less与database.best运气家伙build立的连接数

mysql允许你一次插入多行INSERT手册