Una inserción masiva en MySQL es cuando necesita insertar muchos registros en una tabla a la vez. Se puede utilizar para crear rápidamente datos para realizar pruebas. Es tedioso volver a escribir la declaración de inserción para cada fila. Así es como puede realizar una inserción masiva en MySQL.
Inserción masiva en MySQL
Sintaxis
INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( a1, a2,...aN ),( b1, b2,...bN ),..;
…
Ejemplo
Para una tabla table_name con columnas a, b, c
mysql> INSERT INTO table_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9),(3,3,3); +------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | +------+------+------+
Como puede ver, la inserción masiva en MySQL permite filas/columnas duplicadas. Puede causar claves primarias duplicadas. Así es como puedes evitarlo.
Inserción masiva en MySQL sin duplicados
Usamos la cláusula ON DUPLICATE KEY. Detecta valores duplicados de la clave principal. También agregamos una cláusula UPDATE para actualizar el valor duplicado.
Sintaxis
INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( a1, a2,...aN ),( b1, b2,...bN ),.. ON DUPLICATE KEY UPDATE primary_key_field=<expression> ;
…
Ejemplo
Para una tabla table_name con columnas a, b, c y c es la clave principal
mysql> INSERT INTO table_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9),(3,3,3) ON DUPLICATE KEY UPDATE c=c+1; +------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 4 | +------+------+------+
También puede actualizar el valor en función de otras columnas