如何在phpmyadmin中导入时跳过重复记录

时间:2013-08-28 10:41:25

标签: mysql database import phpmyadmin

我的本​​地计算机上有一个数据库,我想将数据导入到我的主机上的数据库中。两个db都是相同的,table namescolumn names等等。

当我export从我的本地数据库通过phpmyadminimport表通过我的主机上的phpmyadmin时弹出一个错误,告诉我{{1}有重复的条目并停止整个操作。

如何通过phpmyadmin导入数据,跳过重复的条目,并在流程结束时显示重复项列表?

我可以做的解决方案是在托管中调用db中主键的所有值,并在导入之前过滤重复项。但我想知道phpmyadmin是否有快速解决方案?

2 个答案:

答案 0 :(得分:37)

在phpMyAdmin的“设置”选项卡中,您可以尝试检查以下值:

  • 设置 - > SQL查询 - >忽略多个语句错误

如果您使用的是CSV格式:

  • 设置 - >导入 - > CSV - >不要中止INSERT错误

如果您使用的是SQL格式:

  • 设置 - >出口 - > SQL - >使用忽略插入

答案 1 :(得分:7)

有几种方法可以做你想做的事:

野蛮的方式:

TRUNCATE TABLE yourTbl; -- emtpies out the table

然后导入,但您可能会丢失数据,因此可能会创建一个备份表。考虑到所有事情,只是不要这样做,检查下面列出的替代方案:

使用INSERT子句编写您自己的IGNORE查询:

INSERT IGNORE INTO yourTbl -- as shown in the linked duplicate

但是,由于您要导入文件,因此查询很可能是LOAD DATA [LOCAL] INFILE。正如您在the manual中看到的那样,您也可以轻松地向该查询添加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

这要求您有权访问命令行,并运行此命令Here's the manual page of MySQL

使用phpMyAdmin,在导入时,您会找到一个复选框,上面写着“忽略重复”,检查并导入。 Here's a page with screenshots
您也可以选择检查“忽略错误”,但这是另一种蛮力方法,我不建议这样做。