我有一个名为“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 |
+---------------+------------+---------+-------+---------+
有人可以指导我吗?
答案 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,你不再需要它了。