sql >> Database teknologi >  >> RDS >> Mysql

Hvordan laver man en masseindsættelse i MySQL?

Et bulkinsert i MySQL er, når du skal indsætte mange poster i en tabel på én gang. Det kan bruges til hurtigt at oprette data til test. Det er trættende at omskrive indsætningserklæringen for hver række. Sådan kan du masseindsætte i MySQL.

Masseindsæt i MySQL

Syntaks

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

a1, a2, a3,.. – værdier for felt1
b1, b2, b3,.. – værdier for felt2
c1, c2, c3,.. – værdier for felt3

Eksempel
For en tabel tabelnavn med kolonner 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, tillader masseindsættelse i MySQL duplikerede rækker/kolonner. Det kan forårsage duplikerede primærnøgler. Sådan kan du undgå det.

Masseindsæt i MySQL uden dubletter

Vi bruger ON DUPLICATE KEY-klausulen. Den registrerer duplikerede værdier af primær nøgle. Vi tilføjer også en UPDATE-klausul for at opdatere dubletværdien.

Syntaks

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ærdier for felt1
b1, b2, b3,.. – værdier for felt2
c1, c2, c3,.. – værdier for felt3

Eksempel
For en tabel tabelnavn med kolonner a, b, c og c er den primære nøgle

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 også opdatere værdi baseret på andre kolonner

  1. Tjek ikke-sendt e-mail i SQL Server (T-SQL)

  2. ORA-28040:Ingen matchende godkendelsesprotokol undtagelse

  3. Kom godt i gang med Cloud Firestore til iOS

  4. T-SQL:Valg af kolonne baseret på MAX (anden kolonne)