Czasami może być konieczne szybkie utworzenie dużej ilości danych do testowania obciążenia. Możesz wybrać i wstawić do tej samej tabeli w MySQL. Takie podejście szybko powiększa istniejące tabele. Daje mnóstwo płyt do zabawy. Oto kilka sposobów, aby to zrobić.
Wstaw do tej samej tabeli w MySQL
Składnia
INSERT INTO table_name ( field1, field2,...fieldN ) SELECT field1, field2, fieldN from table_name;
Przykład
Dla tabeli nazwa_tabeli z kolumnami a, b, c
+------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | +------+------+------+
Wstaw do tej samej tabeli w MySQL wszystkie rekordy z tabeli
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 | +------+------+------+
Wstaw do tej samej tabeli w MySQL kilka rekordów z tabeli
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 | +------+------+------+
Możesz otrzymać błąd zduplikowanej wartości, jeśli jedno z tych pól jest kluczem podstawowym lub masz ograniczenie unikalności dla pola. Oto jak możesz tego uniknąć.
Wstaw do tej samej tabeli w MySQL bez duplikatów
Składnia
INSERT INTO table_name ( field1, field2,...fieldN ) SELECT field1, field2, fieldN from table_name ON DUPLICATE KEY UPDATE primary_key_field=<expression> ;
Przykład
Dla tabeli nazwa_tabeli z kolumnami a, b, c i c to klucz podstawowy
+------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | +------+------+------+
Wstaw do tej samej tabeli w MySQL wszystkie rekordy z tabeli
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 | +------+------+------+
Wstaw do tej samej tabeli w MySQL kilka rekordów z tabeli
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 | +------+------+------+
Możesz przeczytać więcej o tym, jak zrobić zbiorcze wstawianie w MySQL