2016-07-07 12 views
0

Wir haben ein Altsystem mit einer wackeligen Admin-Schnittstelle und einer der Benutzer konnte einige Datensätze löschen. Wir haben eine Sicherung von vor ein paar Tagen, aber wir nicht wollen nur die DB entfernen und wiederherstellen von der Sicherung - ich brauche nur ein paar Arten von Objekten von dort (viele Zeilen, aber nur ein paar assoziierte Objekte) .Restore Teil einer Datenbank

Wie kann ich nur einige Datensätze wiederherstellen? Ich dachte, die folgende funktionieren würde:

  • ActiveRecord::Base.establish_connection auf die Backup-db
  • Besorgen Sie sich die Aufzeichnungen verbinden I (zB widgets = Widget.all)
  • Ändern Sie den Anschluss an die Produktion db (wieder mit establish_connection)
  • wiederherstellen möchten
  • Speichern Sie die Widgets (widgets.save) - aber es funktioniert nicht?

Gibt es etwas intrinsische in einem Active Objekt, das ich es mit der gleichen ID und alles rund um die production Datenbank, obwohl es ursprünglich aus der backup Datenbank machen Speichern ändern können, so sind sie ziemlich identisch, wie Sie waren vorher (abgesehen von der created_at, natürlich, was in Ordnung ist)

Dies ist wahrscheinlich nicht der beste Weg, es zu tun, aber ich kann nicht wirklich bestimmen, was der beste Weg ist. Die Datenbank ist ziemlich hefty, so kann ich nicht wirklich rohe SQL oder so etwas bekommen.

Jede Hilfe wird geschätzt!

+0

"Die Datenbank ist ziemlich hefty, so kann ich nicht wirklich rohe SQL oder so etwas bekommen." Was meinen Sie? –

+0

Sie können eine db an eine gigantische SQL-Anweisung übergeben, die die Daten in der Datenbank enthält, die die Befehle ausführt, die zum Wiederherstellen der Daten erforderlich sind. Aber die db ist zu groß, um durch all das zu kriechen. :) – charlie

Antwort

1

Ansatz 1

Ich glaube, der einfachste Ansatz eine Momentaufnahme der wenigen Tabellen zu nehmen wäre, die Sie wiederherstellen möchten, und dann wiederherstellen, dass die Sicherung auf Ihre Zieldatenbank.

Ansatz 2

Wenn Sie kein Backup nur die bestehende Backup in eine neue Datenbank wiederherstellen versuchen, in Anspruch nehmen kann und dann verbinden, um es mit Active :: Base.establish_connection dann, wählen Sie Datensätze von diesen wenigen Tabellen und stellen Sie das in Ihrer Zieldatenbank wieder her.

Ansatz 3

Wenn Sie mysql oder andere RDBMS verwenden, dann wieder her nur der Rücken in eine neue Datenbank und dann schreiben Sie SQL aus dieser Datenbank zu Ihrer Zieldatenbank Tabellenzeilen zu übertragen.

+0

Danke, endete oben # 1. Alles ist gut! (und wir ändern diese Schnittstelle STAT) – charlie