Do ładowania ogromnych ilości danych do MySQL, LOAD DATA INFILE jest zdecydowanie najszybszą opcją. Niestety, chociaż można tego używać w sposób INSERT IGNORE lub REPLACE works, ON DUPLICATE KEY UPDATE nie jest obecnie obsługiwany.MySQL LOAD DATA INFILE z DUPLICATE KEY UPDATE
Jednak, ON DUPLICATE KEY UPDATE
ma przewagę nad REPLACE
. Ta ostatnia wykonuje usuwanie i wstawia, gdy istnieje duplikat. To przynosi koszty dla kluczowego zarządzania. Również identyfikatory autoinkrementacji nie będą zachowywać się na zamienniku.
W jaki sposób można emulować ON DUPLICATE KEY UPDATE
przy użyciu opcji ZAŁADUJ DANE INFILE?
Proponuję raczej użyć 'INSERT INTO target_table SELECT coloumn_name1, coloumn_name1 FROM temporary_table' ponieważ * będzie zawierać klucz podstawowy i powodować, że elementy o tym samym kluczu podstawowym (w przypadku klucza kluczowego auto_increment) w tabeli głównej będą aktualizowane w przeciwnym razie to działało dla mnie! – JonoCoetzee
Dzięki za odpowiedź, pracował dla mnie po trochę żonglerki SQL. Mój SQL-fu jest bardzo zardzewiały, fajnie się uczyć takich fajnych technik. – Chubas
Dzięki stąd też - działa znakomicie - nie sądzę, że można było wykonać KLUCZ DUPLIKATOWY z INFISTRATĄ DANYCH LOAD, więc nigdy wcześniej nie próbowałem. – Shaun