我需要将生产mysql数据库中任何缺失的行从还原的备份数据库合并到同一台机器上。
如何在保留原始主键ID(自动增量)的同时执行此操作。
答案 0 :(得分:1)
您可以尝试:
INSERT IGNORE INTO table_1 SELECT * FROM table_2;
允许table_1中的那些行取代table_2中具有匹配主键的那些行,同时仍然插入带有新主键的行。
可替换地,
REPLACE INTO table_1 SELECT * FROM table_2;
将使用table_2中的相应行更新table_1中已有的行,同时插入带有新主键的行。
答案 1 :(得分:0)
--create a backup just in case
CREATE TABLE table_prod_sav SELECT * FROM table_prod;
--insert the missing rows
INSERT INTO table_prod (id, field)
SELECT b.id, b.field
FROM table_backup b LEFT JOIN table_prod p ON b.id = p.id
WHERE p.id IS NULL;
--Check consistency...
--DROP TABLE table_prod_sav;