mysql导入只缺少行

时间:2013-06-06 23:55:08

标签: mysql cmd mysqldump

我正在寻找一种从先前备份恢复数据库的方法。但是,备份不应简单地覆盖所有现有记录,而应仅添加当前DB与备份文件之间的差异。如果备份中没有存储“不存在的”记录,则不会发生任何事情。备份是使用mysqldump完成的。有线索吗? 提前致谢

2 个答案:

答案 0 :(得分:10)

这是一个较少的手动答案:

mysqldump -t --insert-ignore --skip-opt -u USER -pPASSWORD -h 127.0.0.1 database > database.sql

带有-t --insert-ignore --skip-opt选项的导出命令将为您提供一个没有DROP TABLECREATE TABLE命令的sql转储文件,每个INSERT现在都是INSERT IGNORE

BONUS:

这将以相同的方式转储单个表:

mysqldump -t --insert-ignore --skip-opt -u USER -pPASSWORD -h 127.0.0.1 database table_name > table_name.sql

我今天需要这个,并且忍不住要分享它!

答案 1 :(得分:5)

从转储文件中删除DROP TABLECREATE TABLE语句。将INSERT语句更改为INSERT IGNORE。然后加载备份文件,它不应更新任何重复的行。