【发布时间】:2016-07-07 05:19:38
【问题描述】:
我们的旧系统具有不稳定的管理界面,其中一位用户设法清除了一些记录。我们有几天前的备份,但我们不只想删除数据库并从备份中恢复 - 我只需要那里的几种类型的对象(很多行,但只有一些相关的对象)。
我怎样才能只恢复一些记录?我认为以下方法会起作用:
-
ActiveRecord::Base.establish_connection连接备份数据库 - 获取我要恢复的记录(例如
widgets = Widget.all) - 更改与生产数据库的连接(再次使用
establish_connection) - 保存小部件 (
widgets.save) - 但它不起作用?
ActiveRecord 对象中是否有一些内在的东西,我可以更改它以使其使用相同的 id 和所有内容保存到 production 数据库中,即使它最初来自 backup 数据库,所以它们几乎相同他们以前的样子(当然,除了created_at,这还可以)
这可能不是最好的方法,但我无法确定最好的方法是什么。数据库相当庞大,所以我无法真正获得原始 sql 或类似的东西。
任何帮助表示赞赏!
【问题讨论】:
-
"数据库相当庞大,所以我无法真正获得原始 sql 或类似的东西。"什么意思?
-
您可以通过管道将 db 连接到包含 db 中数据的巨型 sql 语句,该语句执行恢复数据所需的命令。但是数据库太大了,无法爬过所有这些。 :)
标签: ruby-on-rails ruby-on-rails-3 activerecord