私たちには、不安定な管理インターフェースを備えたレガシーシステムがあり、ユーザーのうちの1人はレコードを一掃することができました。我々は数日前からのバックアップを持っていますが、はありません。は、DBを削除してバックアップから復元したいのです - そこからいくつかのタイプのオブジェクトが必要です(多くの行、 。データベースの一部を復元する
一部のレコードのみを復元するにはどうすればよいですか?私は、次のように働くだろうと思った:
ActiveRecord::Base.establish_connection
変更(establish_connection
と再)生産DBへの接続、私は(例えばwidgets = Widget.all
)を復元するレコード- グラブ
- バックアップDBに接続するために
- ウィジェットを保存します(
widgets.save
) - 動作しませんか?
は、私はそれはそれはbackup
データベース出身だにもかかわらず、production
データベースに同じIDとすべてを保存するために変更することができますActiveRecordのオブジェクト内の固有の何かがありますので、彼らはどのようにほとんど同じです彼らは前にあった(created_at
はもちろん、これは大丈夫です)
これはおそらく最良の方法ではありませんが、私は本当に最良の方法が何であるかを判断できません。データベースはかなり重いので、実際にはraw SQLなどを得ることはできません。
"データベースがかなり重いので、raw SQLなどを取得することはできません。"どういう意味ですか? –
dbをデータを含む巨大なSQL文にパイプすることができます。この文は、データの復元に必要なコマンドを実行します。しかし、DBは大きすぎてすべてのものを巡って行きません。 :) – charlie