sql >> Databasteknik >  >> RDS >> Mysql

Hur gör man en bulkinsert i MySQL?

En bulkinsert i MySQL är när du behöver infoga många poster i en tabell samtidigt. Den kan användas för att snabbt skapa data för testning. Det är tröttsamt att skriva om infogningssatsen för varje rad. Så här kan du massinfoga i MySQL.

Massinfoga i MySQL

Syntax

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

a1, a2, a3,.. – värden för fält1
b1, b2, b3,.. – värden för fält2
c1, c2, c3,.. – värden för fält3

Exempel
För en tabell tabellnamn med kolumnerna 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  |
+------+------+------+

Som du kan se tillåter bulkinfogning i MySQL dubbletter av rader/kolumner. Det kan orsaka dubbletter av primärnycklar. Så här kan du undvika det.

Massinfoga i MySQL utan dubbletter

Vi använder ON DUPLICATE KEY-satsen. Den upptäcker dubbletter av primärnyckelns värden. Vi lägger också till en UPDATE-sats för att uppdatera dubblettvärdet.

Syntax

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,.. – värden för fält1
b1, b2, b3,.. – värden för fält2
c1, c2, c3,.. – värden för fält3

Exempel
För en tabell tabellnamn med kolumnerna a, b, c och c är den primära nyckeln

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  |
+------+------+------+

Du kan också uppdatera värde baserat på andra kolumner

  1. CS50:LIKE-operator, variabel substitution med % expansion

  2. Hur bearbetar MySQL ORDER BY och LIMIT i en fråga?

  3. Vilka är fördelarna och nackdelarna med att behålla SQL i lagrade processer kontra kod

  4. Så här skapar du en rapport från en tabell i Access 2016