现有数据库数据丢失,求插入备份数据库中数据方法 !

2016-04-09 15:08:04 +08:00
 ranzige
有一个 mysql 数据库 A , 4 月 2 号左右被管理员误删除了一些老数据。这个数据库有一个备份已经恢复成数据库 B ,但是 B 中数据只截至 3 月 27 日的。也就是说, A 中丢失的大部分数据在 B 中可以找到。
我现在需要把现在数据库中误删除的数据从 3 月 27 日的库中恢复出来(包括标识自增字段还维持旧库的)。我想到的语句是这样:
insert into a.table
select * from a.table
where not exists(select * from b.table where b.table.id=a.table.id)

那么问题来了:怎样把 B 中的原标识列 ID 也插入?这样写对不对?还是有更好的方法 ?
2656 次点击
所在节点    MySQL
6 条回复
qianmeng
2016-04-10 07:09:40 +08:00
分割一下。

对单表来说,建立一个新表,先导入删除日期之前的,再导入删除日期之后的,标识应该不会乱
ranzige
2016-04-10 08:10:13 +08:00
@qianmeng 问题是之前的标识也不是连续的。比如备份中的标识是 1 2 4 6 这样。而现在库中是 1 6 ,少了 2 和 4 。因为各表间 id 有关联,所以 id 列必须正确。
ms sql 中可以通过启用标识列插入的方式修改 id 。 mysql 中不能吗?
qianmeng
2016-04-10 08:40:43 +08:00
@ranzige 你可能还没试过,只要不重复,只要后面的比前面的大,标识是可以原样复制过去的
ranzige
2016-04-10 08:47:37 +08:00
@qianmeng 哦哦,就是说,之前删除的 2 和 4 ,那么再插入时, 2 和 4 的值会自己过去,是吧?
vidon
2016-04-10 13:11:28 +08:00
把 B 改成 A ?
qianmeng
2016-04-10 13:53:18 +08:00
@ranzige 我自己导入是这样的,不放心的话可以先测试测试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/269768

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX