Parfois, vous devrez peut-être créer rapidement beaucoup de données pour les tests de charge. Vous pouvez sélectionner et insérer dans la même table dans MySQL. Cette approche développe rapidement vos tables existantes. Cela donne beaucoup de disques à jouer. Voici quelques façons de le faire.
Insérer dans la même table dans MySQL
Syntaxe
INSERT INTO table_name ( field1, field2,...fieldN ) SELECT field1, field2, fieldN from table_name;
Exemple
Pour une table table_name avec les colonnes a, b, c
+------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | +------+------+------+
Insérer dans la même table dans MySQL tous les enregistrements d'une table
mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name; +------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | +------+------+------+
Insérer dans la même table dans MySQL certains enregistrements d'une table
mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name where a=1 or a=3; +------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | | 1 | 2 | 3 | | 3 | 3 | 3 | +------+------+------+
Vous pouvez obtenir une erreur de valeur en double si l'un de ces champs est une clé primaire ou si vous avez une contrainte d'unicité pour un champ. Voici comment vous pouvez l'éviter.
Insérer dans la même table dans MySQL sans doublons
Syntaxe
INSERT INTO table_name ( field1, field2,...fieldN ) SELECT field1, field2, fieldN from table_name ON DUPLICATE KEY UPDATE primary_key_field=<expression> ;
Exemple
Pour une table table_name avec les colonnes a, b, c et c est la clé primaire
+------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | +------+------+------+
Insérer dans la même table dans MySQL tous les enregistrements d'une table
mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name ON DUPLICATE KEY c=c+1; +------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 1 | 2 | 4 | | 4 | 5 | 7 | | 7 | 8 | 10 | +------+------+------+
Insérer dans la même table dans MySQL certains enregistrements d'une table
mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name where a=1 or a=3 ON DUPLICATE KEY c=c+1; +------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 1 | 2 | 5 | +------+------+------+
Vous pouvez en savoir plus sur Comment faire une insertion en masse dans MySQL