Nogle gange skal du muligvis hurtigt oprette en masse data til belastningstest. Du kan vælge og indsætte i samme tabel i MySQL. Denne tilgang vokser hurtigt dine eksisterende borde. Det giver mange plader at spille med. Her er et par måder at gøre det på.
Indsæt i samme tabel i MySQL
Syntaks
INSERT INTO table_name ( field1, field2,...fieldN ) SELECT field1, field2, fieldN from table_name;
Eksempel
For en tabel tabelnavn med kolonner a, b, c
+------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | +------+------+------+
Indsæt alle poster fra en tabel i samme tabel i MySQL
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 | +------+------+------+
Indsæt nogle poster fra en tabel i samme tabel i MySQL
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 | +------+------+------+
Du kan få en dubletværdifejl, hvis et af disse felter er en primær nøgle, eller du har en unikhedsbegrænsning for et felt. Sådan kan du undgå det.
Indsæt i samme tabel i MySQL uden dubletter
Syntaks
INSERT INTO table_name ( field1, field2,...fieldN ) SELECT field1, field2, fieldN from table_name ON DUPLICATE KEY UPDATE primary_key_field=<expression> ;
Eksempel
For en tabel tabelnavn med kolonner a, b, c og c er primær nøgle
+------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | +------+------+------+
Indsæt alle poster fra en tabel i samme tabel i MySQL
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 | +------+------+------+
Indsæt nogle poster fra en tabel i samme tabel i MySQL
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 | +------+------+------+
Du kan læse mere om Sådan laver du et bulkinsert i MySQL