我的本地计算机上有一个数据库,我想将数据导入到我的主机上的数据库中。两个db都是相同的,table names
,column names
等等。
当我export
从我的本地数据库通过phpmyadmin
和import
表通过我的主机上的phpmyadmin时弹出一个错误,告诉我{{1}有重复的条目并停止整个操作。
如何通过phpmyadmin导入数据,跳过重复的条目,并在流程结束时显示重复项列表?
我可以做的解决方案是在托管中调用db中主键的所有值,并在导入之前过滤重复项。但我想知道phpmyadmin是否有快速解决方案?
答案 0 :(得分:37)
在phpMyAdmin的“设置”选项卡中,您可以尝试检查以下值:
如果您使用的是CSV格式:
如果您使用的是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
您也可以选择检查“忽略错误”,但这是另一种蛮力方法,我不建议这样做。