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