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