Wstawianie zbiorcze w MySQL ma miejsce, gdy musisz wstawić wiele rekordów do tabeli naraz. Może służyć do szybkiego tworzenia danych do testów. Przepisywanie instrukcji INSERT dla każdego wiersza jest męczące. Oto jak możesz zbiorczo wstawić do MySQL.
Wstawianie zbiorcze w MySQL
Składnia
INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( a1, a2,...aN ),( b1, b2,...bN ),..;
a1, a2, a3,... – wartości dla pola 1
b1, b2, b3,... – wartości dla pola 2
c1, c2, c3,... – wartości dla pola 3
…
Przykład
Dla tabeli nazwa_tabeli z kolumnami 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 | +------+------+------+
Jak widać, wstawianie zbiorcze w MySQL pozwala na duplikowanie wierszy/kolumn. Może to spowodować zduplikowanie kluczy podstawowych. Oto jak możesz tego uniknąć.
Zbiorcze wstawianie do MySQL bez duplikatów
Używamy klauzuli ON DUPLICATE KEY. Wykrywa zduplikowane wartości klucza podstawowego. Dodajemy również klauzulę UPDATE, aby zaktualizować zduplikowaną wartość.
Składnia
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,... – wartości dla pola 1
b1, b2, b3,... – wartości dla pola 2
c1, c2, c3,... – wartości dla pola 3
…
Przykład
Dla tabeli nazwa_tabeli z kolumnami a, b, c a c jest kluczem podstawowym
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 | +------+------+------+
Możesz także zaktualizować wartość na podstawie innych kolumn