Wie zum wiederherstellen einer einzelnen Tabelle aus einer .sql-postgresql backup?
Einer Tabelle Zeilen wurden fälschlicherweise aus der Datenbank gelöscht. Wir haben ein db-backup, das die Ergebnisse in eine sql-Datei, die wiederhergestellt, wie so:
psql -h localhost -d proddump -f /Users/U/Desktop/prod_db_backup/PostgreSQL/site_prod.sql
Endet dies tun, eine vollständige Wiederherstellung vor Ort. Aber was wir brauchen, ist die Wiederherstellung einer einzelnen Tabelle die Zeilen für die Produktion. Irgendwelche Tipps, wie man diese Arbeit mit dem PostgreSQL-9.1?
Dank
InformationsquelleAutor AnApprentice | 2013-02-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht SQL-backups, wenn Sie benötigen einzelne Tabelle wiederherstellen, etc. Verwenden Sie
pg_dump
's-Fc
- option - die "custom" - format. Dies kann wieder mitpg_restore
. Selektive Wiederherstellung möglich ist, da sind alle möglichen anderen praktischen features.pg_restore
umwandeln kann ein custom-dump-format in ein SQL-dump später, wenn Sie es brauchen.Wenn Sie fest sind, mit einem bestehenden dump, Ihre einzigen Optionen sind:
Verwenden Sie einen text-editor zum extrahieren der Ziel-Tabelle Daten in eine separate Datei und einfach wiederherstellen; oder
Wiederherstellung der Müllkippe zu einer " Wegwerf-Datenbank verwenden Sie dann
pg_dump
für eine selektive dump darunter nur die Tabelle. Da es Einweg ist, können Sie eine separate Pg-Instanz auf einige entladen schnell-aber unsichere-Maschine, wo Sie wiederum auf alle "machen Sie es schnell, aber Essen meine Daten, wenn Sie wie" Optionen wiefsync=off
. Sollten Sie NIE festgelegt, dass in der Produktion.pg_dumpall
backup in-Fc
format?pg_dumpall nicht -F-Flagge-Es kann dump der Datenbank in SQL-format.
InformationsquelleAutor Craig Ringer
Ich bin mir nicht bewusst, irgendwelche Tools für, aber dieser one-liner Auszüge
precious_table
ausmy_backup.sql
Datei:InformationsquelleAutor Zouppen
Können Sie mit grep + sed in roder um Tabelle Daten:
Erste, Sie brauchen, um zu identifizieren, Grenzen:
Extrahieren von Daten für die Tabelle test2:
Beachten Sie, müssen Sie subtrahieren eines aus der zweiten Reihe (ich.e ausschließen nächste Kopie stmt)
Nun, Sie können das laden
new_table_name.sql
und wiederherstellen von Daten, die Sie benötigen.Jetzt können Sie das laden von Daten in neue Tabelle
InformationsquelleAutor mys
Gibt es einen einfachen Weg.
'pg_restore' hat ein '--Tabelle/-t' - option.
Benutzen Sie '-h' für remote-host.
Andere Optionen hier
Recht, sorry, Datei zu
pg_dump
erstenInformationsquelleAutor Sergii Mostovyi
Ich bin zufällig auf
pg_dumpall
dump um. Und ich würde gerne wiederherstellen Tabelle mit dem Namenusers
aus der Datenbank mit dem Namenedc
, wie Sie die meisten wahrscheinlich wird haben gleich benannte Tabellen in verschiedenen Datenbanken und selbst-Schemata.Für meinen Fall, die folgenden
sed
oneliner funktioniert:Was es tut:
/^\\connect edc/,/^\\connect/
Grenzen die Suche auf den Umfang meiner Datenbank;{…}
führen alle innen-Befehle für die Auswahl;/\susers\(\s\|$\)/
entspricht allen Linien mitusers
auf seine eigene, einschließlich am Ende der Zeile;/;\|\\\./
matches Linien mit;
oder mit\.
p
Kräfte der passende Zeilen werden ausgegeben (beachten Sie, dass die sed aufgerufen wird, mit-n
).Abhängig von der Komplexität Ihrer Daten, müssen Sie möglicherweise zu zwicken.
Alles, was Sie tun müssen, ist das Rohr
sed
Ausgabe derpsql
Befehl mit den rechten Schalter.InformationsquelleAutor vyegorov