我们有一个带有摇摇欲坠的管理界面的遗留系统,其中一个用户设法消灭了一些记录。我们几天前有一个备份,但我们不想要删除数据库并从备份中恢复 - 我只需要几种类型的对象(很多行,但只有一些相关的对象)。
如何只恢复一些记录?我认为以下内容可行:
ActiveRecord::Base.establish_connection
连接到备份数据库widgets = Widget.all
)establish_connection
)widgets.save
) - 但它不起作用? ActiveRecord对象中是否存在某些内在的东西,我可以更改它以使用相同的id和所有内容保存到production
数据库,即使它最初来自backup
数据库,所以它们是与之前的情况完全相同(除了created_at
,当然,这没关系)
这可能不是最好的方法,但我无法确定最佳方法。数据库非常大,所以我无法真正获得原始的SQL或类似的东西。
任何帮助表示赞赏!
答案 0 :(得分:1)
方法1
我认为最简单的方法是拍摄要恢复的几个表的快照,然后将该备份还原到目标数据库。
方法2
如果您无法进行备份,只需尝试将现有备份还原到新数据库,然后使用ActiveRecord :: Base.establish_connection连接到它,然后选择这几个表的记录并将其还原到目标数据库。 / p>
方法3
如果您正在使用mysql或任何其他RDBMS,那么只需将备份还原到新数据库,然后编写SQL以将表行从该数据库传输到目标数据库。