Per il caricamento di enormi quantità di dati in MySQL, l'opzione più veloce è LOAD DATA INFILE. Sfortunatamente, mentre questo può essere usato in un modo INSERT IGNORE o REPLACE funziona, ON DUPLICATE KEY UPDATE non è attualmente supportato.MySQL CARICARE DATI INFILA con ON DUPLICATE KEY UPDATE
Tuttavia, ON DUPLICATE KEY UPDATE
presenta vantaggi rispetto a REPLACE
. Quest'ultimo fa una cancellazione e un inserto quando esiste un duplicato. Ciò comporta un sovraccarico per la gestione delle chiavi. Inoltre, gli ID autoincrement non rimarranno gli stessi su una sostituzione.
Come si può emulare ON DUPLICATE KEY UPDATE
quando si utilizza LOAD DATA INFILE?
Suggerisco piuttosto di usare 'INSERT INTO target_table SELECT coloumn_name1, coloumn_name1 FROM temporary_table' perché * includerà la chiave primaria e causerà gli articoli con la stessa chiave primaria (nel caso di una chiave primaria auto_increment) nella tabella principale da aggiornare , altrimenti questo ha funzionato per me! – JonoCoetzee
Grazie per la risposta, ha funzionato per me dopo un po 'di giocoleria SQL. Il mio SQL-fu è molto arrugginito, bello imparare tecniche pulite come questa. – Chubas
Grazie anche da qui - funziona brillantemente - non pensavo fosse possibile fare un ON DUPLICATE KEY con LOAD DATA INFILE, quindi mai provato prima. – Shaun