Cómo hacer una inserción por lotes en MySQL

Resuelto Genadinik asked hace 13 años • 6 respuestas

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?

Genadinik avatar Apr 03 '11 08:04 Genadinik
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);
nietaki avatar Apr 03 '2011 01:04 nietaki

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

Kamran avatar May 30 '2012 23:05 Kamran