Ci sono un paio di modi per fare ciò che si vuole:
Il modo brutale:
TRUNCATE TABLE yourTbl; -- emtpies out the table
Quindi importare, ma si potrebbero perdere dati, quindi creare una tabella di backup. Tutto sommato, basta non fare questo, controlla le alternative elencate di seguito:
Scrivi la tua INSERT
interrogazione, con IGNORE
clausola:
INSERT IGNORE INTO yourTbl -- as shown in the linked duplicate
Ma, dal momento che si sta importando un file, la query , molto probabilmente è un LOAD DATA [LOCAL] INFILE
. Come si può vedere nel the manual, è possibile aggiungere facilmente un IGNORE
a tale query, anche:
LOAD DATA LOCAL INFILE '/path/to/files/filename1.csv' IGNORE -- IGNORE goes here
INTO TABLE your_db.your_tbl
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(`field1`,`field2`);
Questo è tutto.Non preoccupatevi se non siete troppo comodo scrivere le proprie query come questo, ci sono altri modi di fare ciò che si vuole fare:
Il modo CLI:
mysqlimport -i dbname fileToImport
# Or
mysqlimport --ignore dbname fileToImport
Inoltre CLI, creare un file contenente la query LOAD DATA
sopra, quindi:
$: mysql -u root -p
*********** #enter password
mysql> source /path/to/queryFile.sql
Ciò richiede di avere accesso alla linea di comando, e si esegue questo comando Here's the manual page of MySQL
Utilizzando phpMyAdmin, durante l'importazione, troverete una casella di controllo dicendo "Ignora duplicati", verificarlo e importarlo. Here's a page with screenshots
Puoi anche scegliere di verificare "Ignora errori", ma questo è un altro approccio a forza bruta, e non lo consiglierei.
Duplicato di: http://stackoverflow.com/questions/9919105/skip-insert-on-duplicate-entry-in-mysql – Karl
@Karl ho visto quel post. Ma non vedo un'area nella scheda di importazione di phpmyadmin in cui posso digitare il codice 'sql'? –
Quindi tutto quello che vuoi fare è duplicare 'IGNORE' su' INSERT' (combina i due e ottieni 'INSERT IGNORE') –