有几种方法可以做你想做的事:
残酷的方式:
TRUNCATE TABLE yourTbl; -- emtpies out the table
然后导入,但你可能会丢失数据,所以也许创建一个备份表。考虑到所有因素,只是不要这样做,请检查下面列出的替代方案:
编写您自己的INSERT
查询,带有IGNORE
子句:
INSERT IGNORE INTO yourTbl -- as shown in the linked duplicate
但是,由于您正在导入文件,因此查询很可能是LOAD DATA [LOCAL] INFILE
. 正如您在手册中看到的那样,您也可以轻松地IGNORE
向该查询添加一个:
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`);
就是这样。如果您不太习惯这样编写自己的查询,请不要担心,还有其他方法可以做您想做的事情:
CLI 方式:
mysqlimport -i dbname fileToImport
# Or
mysqlimport --ignore dbname fileToImport
同样 CLI,创建一个包含上述LOAD DATA
查询的文件,然后:
$: mysql -u root -p
*********** #enter password
mysql> source /path/to/queryFile.sql
这要求您可以访问命令行,并运行此命令这是 MySQL 的手册页
使用 phpMyAdmin,在导入时,您会发现一个复选框,上面写着“忽略重复项”,选中它并导入。这是带有屏幕截图的页面
您也可以选择检查“忽略错误”,但这是另一种蛮力方法,我不建议这样做。