如何恢复差异mysql转储

时间:2016-06-28 10:36:08

标签: mysql sql

我有一个名为“Testing”的数据库。现在,我必须将具有旧+新数据的新转储文件中的数据恢复到“测试”数据库。我想只将新数据恢复到数据库(不复制旧数据)。

尝试备份表的一部分,然后将其恢复(How to use mysqldump for a portion of a table?),但它没有成功,因为我的表中没有像ID这样的列(行计数的主键)

我的表结构是这样的,

 A              | B          | C       | D     | E       |
+---------------+------------+---------+-------+---------+
| 1432550740000 |     111004 | 10000   |     2 | 9690001 |
| 1432550790000 |     123001 | 10000   |     2 | 9690001 |
| 1432550340000 |   44440215 | 10000   |     2 | 9690001 |
| 1432550450000 |  125400054 | 10000   |     2 | 9690001 |
| 1432551444000 |   43459067 | 10000   |     2 | 9690001 |
+---------------+------------+---------+-------+---------+

有人可以指导我吗?

1 个答案:

答案 0 :(得分:0)

您可以通过创建一个新表(与旧表相同的结构)来绕道而行,并将旧数据和新数据的数据转储到此表中。

然后,您可以从其他表中已存在的新数据中删除行。 (理想情况下,您的数据中有一些东西可以识别您的新值,但如果您自己编写查询,它也可以使用限制)

DELETE FROM newTable WHERE `identifier` IN (SELECT `identifier` FROM oldTable);
DELETE FROM newTable LIMIT 12; -- deletes first 12 entries

现在您只在新表中有新数据。然后,您可以截断旧表并将新数据插入旧表中。

TRUNCATE oldTable;
INSERT INTO oldTable SELECT * FROM newTable;

然后你可以截断,清空或删除newTable,你不再需要它了。