sql >> Database >  >> RDS >> Mysql

Hoe een bulk invoegen in MySQL te doen?

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

  1. Databaseontwerp voor meertalige toepassingen

  2. Ongeldige SQL-fout in kolomnaam

  3. Wanneer moet ik MySQLi gebruiken in plaats van MySQL?

  4. IN vs ELKE operator in PostgreSQL