Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como fazer uma inserção em massa no MySQL?


Uma inserção em massa no MySQL é quando você precisa inserir muitos registros em uma tabela de uma só vez. Ele pode ser usado para criar rapidamente dados para teste. É cansativo reescrever a instrução insert para cada linha. Veja como você pode inserir em massa no MySQL.

Inserção em massa no MySQL


Sintaxe
INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( a1, a2,...aN ),( b1, b2,...bN ),..;

a1, a2, a3,.. – valores para o campo1
b1, b2, b3,.. – valores para o campo2
c1, c2, c3,.. – valores para o campo3


Exemplo
Para uma tabela table_name com colunas 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 você pode ver, a inserção em massa no MySQL permite linhas/colunas duplicadas. Isso pode causar chaves primárias duplicadas. Veja como você pode evitá-lo.

Inserção em massa no MySQL sem duplicatas


Usamos a cláusula ON DUPLICATE KEY. Ele detecta valores duplicados de chave primária. Também adicionamos uma cláusula UPDATE para atualizar o valor duplicado.

Sintaxe
INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( a1, a2,...aN ),( b1, b2,...bN ),..
                       ON DUPLICATE KEY
                       UPDATE primary_key_field=<expression> ;

a1, a2, a3,.. – valores para o campo1
b1, b2, b3,.. – valores para o campo2
c1, c2, c3,.. – valores para o campo3


Exemplo
Para uma tabela table_name com colunas a, b, c e c é a chave primária
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  |
+------+------+------+

Você também pode atualizar o valor com base em outras colunas