Cómo hacer una inserción por lotes en MySQL
Tengo entre uno y muchos registros que deben ingresarse en una tabla. ¿Cuál es la mejor manera de hacer esto en una consulta? ¿Debo simplemente hacer un bucle e insertar un registro por iteración? ¿O hay un mejor camino?
Aceptado
Del manual de MySQL
Las declaraciones INSERT que utilizan la sintaxis VALUES pueden insertar varias filas. Para hacer esto, incluya varias listas de valores de columna, cada una entre paréntesis y separada por comas. Ejemplo:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
La mayoría de las veces, no está trabajando en un cliente MySQL y debe realizar inserciones por lotes utilizando la API adecuada.
Por ejemplo, en 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