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


Tengo 1-muchos número de registros que deben introducirse en una tabla. ¿Cuál es la mejor manera de hacer esto en una consulta? Debo hacer un bucle e insertar un registro por iteración? O hay una mejor manera?

Author: Undo, 2011-04-03

5 answers

Del manual de MySQL

INSERTAR instrucciones que usan VALORES la sintaxis puede insertar varias filas. Hacer esto, incluye varias listas de columnas valores, cada uno encerrado dentro paréntesis y separados por comas. Ejemplo:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
 240
Author: nietaki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-02 09:58:50

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

 19
Author: Kamran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-30 23:18:16
Insert into table(col1,col2) select col1,col2 from table_2;

Por favor, vete to:http://dev.mysql.com/doc/refman/5.5/en/insert.html

 6
Author: janwen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-05 08:47:59

La consulta de carga de datos es una opción mucho mejor , pero algunos servidores como godaddy restringen esta opción en el alojamiento compartido , por lo que solo quedan dos opciones , luego una es insertar registro en cada iteración o inserción por lotes , pero la inserción por lotes tiene su limitaion de caracteres si su consulta excede este número de caracteres establecidos en mysql, entonces su consulta se bloqueará, por lo que sugiero insertar datos en trozos con la inserción por lotes, esto minimizará el número de conexiones establecidas con la base de datos.mucha suerte chicos

 4
Author: Syed Adeel Ali Rizvi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-19 05:49:02

Mysql le permite insertar varias filas a la vez INSERTAR manual

 2
Author: bensiu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-03 01:25:58