Ibland kan du behöva snabbt skapa mycket data för belastningstestning. Du kan välja och infoga i samma tabell i MySQL. Detta tillvägagångssätt växer snabbt dina befintliga tabeller. Det ger många skivor att spela med. Här är några sätt att göra det.
Infoga i samma tabell i MySQL
Syntax
INSERT INTO table_name ( field1, field2,...fieldN ) SELECT field1, field2, fieldN from table_name;
Exempel
För en tabell tabellnamn med kolumnerna a, b, c
+------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | +------+------+------+
Infoga i samma tabell i MySQL alla poster från en tabell
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 | +------+------+------+
Infoga i samma tabell i MySQL några poster från en tabell
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å ett dubblettvärdefel om ett av dessa fält är en primärnyckel eller om du har en unikhetsbegränsning för ett fält. Så här kan du undvika det.
Infoga i samma tabell i MySQL utan dubbletter
Syntax
INSERT INTO table_name ( field1, field2,...fieldN ) SELECT field1, field2, fieldN from table_name ON DUPLICATE KEY UPDATE primary_key_field=<expression> ;
Exempel
För en tabell tabellnamn med kolumnerna a, b, c och c är primärnyckel
+------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | +------+------+------+
Infoga i samma tabell i MySQL alla poster från en tabell
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 | +------+------+------+
Infoga i samma tabell i MySQL några poster från en tabell
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äsa mer om Hur man gör en bulkinsert i MySQL