如何在MySQL中进行批量插入


Answers

大多数情况下,您不是在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

Question

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




加载数据infile查询是更好的选择,但一些像godaddy这样的服务器在共享主机上限制这个选项,所以只剩下两个选项,一个是在每次迭代或批量插入时插入记录,但是如果查询超过此值,批量插入会有其字符限制在mysql中设置的字符数然后你的查询将会崩溃,所以我建议用批量插入块插入数据,这将最小化与database.best运气家伙建立的连接数量