Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment faire une insertion en bloc dans MySQL ?

Une insertion en bloc dans MySQL se produit lorsque vous devez insérer un grand nombre d'enregistrements dans une table à la fois. Il peut être utilisé pour créer rapidement des données à tester. Il est fastidieux de réécrire l'instruction d'insertion pour chaque ligne. Voici comment vous pouvez insérer en masse dans MySQL.

Insertion en bloc dans MySQL

Syntaxe

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

a1, a2, a3,.. – valeurs pour le champ1
b1, b2, b3,.. – valeurs pour le champ2
c1, c2, c3,.. – valeurs pour le champ3

Exemple
Pour une table table_name avec les colonnes 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  |
+------+------+------+

Comme vous pouvez le voir, l'insertion en bloc dans MySQL autorise les lignes/colonnes en double. Cela peut entraîner des clés primaires en double. Voici comment vous pouvez l'éviter.

Insérer en masse dans MySQL sans doublons

Nous utilisons la clause ON DUPLICATE KEY. Il détecte les valeurs en double de la clé primaire. Nous ajoutons également une clause UPDATE pour mettre à jour la valeur en double.

Syntaxe

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,.. – valeurs pour le champ1
b1, b2, b3,.. – valeurs pour le champ2
c1, c2, c3,.. – valeurs pour le champ3

Exemple
Pour une table table_name avec les colonnes a, b, c et c est la clé primaire

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

Vous pouvez également mettre à jour la valeur en fonction d'autres colonnes