如何合并具有相同字段的两个数据库,但数据不应重复


How to merge two database with same field but data should not be duplicate?

我有两个.sql数据库,我想合并这两个数据库的数据,但数据不应该是重复的。两个数据库都包含相同的数据,我也想忽略相同的数据,并且主数据库中不存在的数据应从另一个数据库插入其中。数据库 1 和 2 中都有 NAME 字段,因此应删除相同的名称,并插入其他名称。

for example
db1 have author_name         db2 have author_name
         KARAN                      RAM  
         KISAN                      LAXMAN 
         MAYUR                      MAYUR
         RAM                        RAHIM
After Merging the result should be
DB1 author_name
     KARAN 
     KISAN 
     MAYUR 
     RAM 
     LAXMAN 
     RAHIM

这个问题有点模棱两可,但我相信我理解这个问题 - 你只是想将两个数据库转储合并到一个表中。

假设您的表名为 authors,并且您有 2 个数据库(如您描述的 db1db2 。 您的架构很简单:

+-------------+
| column      |
+-------------+
| id          |
| author_name |
+-------------+

首先,您提到您有 2 个.sql文件,我认为这些文件是用 mysqldump 生成的 - 确保您的author_name列具有唯一的索引集。

ALTER TABLE db1.authors ADD UNIQUE INDEX `UNI_authors_author_name` (`author_name`)

然后修改这两个 SQL 文件,并将 INSERt 查询从:

INSERT INTO db1.authors

INSERT IGNORE INTO db1.authors

这只会忽略 mysql 在您尝试插入重复内容时会抛出的错误。 唯一索引强制唯一记录,在这种情况下,您无需编辑记录,因此ON DUPLICATE KEY UPDATE不会帮助您。