如何在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();
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手册