我需要从还原到同一台机器的备份数据库中合并生产 mysql 数据库中的任何缺失行。
如何在保留自动递增的原始主键 ID 的同时做到这一点。
你可以试试:
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 中已经存在的那些行,同时插入具有新主键的行。
--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;