Een bulk-insert in MySQL is wanneer u veel records in één keer in een tabel moet invoegen. Het kan worden gebruikt om snel gegevens te maken om te testen. Het is vermoeiend om de insert-instructie voor elke rij te herschrijven. Hier leest u hoe u bulksgewijs kunt invoegen in MySQL.
Bulk invoegen in MySQL
Syntaxis
INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( a1, a2,...aN ),( b1, b2,...bN ),..;
a1, a2, a3,.. – waarden voor veld1
b1, b2, b3,.. – waarden voor veld2
c1, c2, c3,.. – waarden voor veld3
…
Voorbeeld
Voor een tafel table_name met kolommen 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 | +------+------+------+
Zoals je kunt zien, staat bulk invoegen in MySQL dubbele rijen/kolommen toe. Het kan dubbele primaire sleutels veroorzaken. Hier leest u hoe u het kunt vermijden.
Bulk invoegen in MySQL zonder duplicaten
We gebruiken de clausule ON DUPLICATE KEY. Het detecteert dubbele waarden van de primaire sleutel. We voegen ook een UPDATE-clausule toe om de dubbele waarde bij te werken.
Syntaxis
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,.. – waarden voor veld1
b1, b2, b3,.. – waarden voor veld2
c1, c2, c3,.. – waarden voor veld3
…
Voorbeeld
Voor een tafel table_name met kolommen a, b, c en c is de primaire sleutel
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 | +------+------+------+
U kunt de waarde ook bijwerken op basis van andere kolommen