2014-07-01 19 views
5

Ich habe eine Datenbank mit einigen Tabellen für die Anwendung Einstellungen, Listen wie Benutzer, Abteilungen, Städte. Ich möchte die Struktur und die Daten für diese Tabellen. Wenn ich also einen neuen Benutzer bekomme, wird das Backup es speichern.Postgresql: Backup aller Tabellenstrukturen, aber nur wenige Datentabellen

Aber auch einige Daten für historische und berechnete Daten, dass Daten aus anderen Quellen kamen und nur für eine gewisse Zeit funktionieren und dann ablaufen, so dass Datensicherung eine Verschwendung sein wird. Aber muss die Struktur haben, damit die Wiederherstellung die Tabellen schaffen wird, die sie für die Anwendung benötigen.

gerade benutze ich diesen Befehl, aber dies speichern alle Tabelle und alle Daten.

pg_dump -U "postgres" -h "local" -p "5432" 
     -d dbName -F c -b -v -f c:\uti\backup.dmp 

Ich habe 2 weitere Fragen in Bezug auf pg_dump.

A) Dokumente sagen Option -b ist für Blob Daten. Ich habe sehr große Tabellen, aber ich denke, diese Option ist nur für Tabellen mit einem BLOB - Feld, also sollte es keinen Unterschied in meiner Sicherung machen, weil ich diese Felder nicht habe?

B) Ich sehe pg_dump Optionen sind für Tabellen und Schemas. Wie geben Sie an, ob der Funktionscode gespeichert werden soll?

+1

Tun Sie es in 2 Schritten. Sichern Sie Ihr Schema (mit Funktionen) und dann selektiv Daten. – mlt

+0

Also habe ich einen pg_dump zu einer Datei 'backup' gemacht ... und dann noch einen pg_dump zur selben Datei? Wenn das der Fall ist, reicht es als Antwort ein, damit ich dafür stimmen kann. –

+0

ok, das funktioniert nicht, weil die erste Datei überschrieben wird. –

Antwort

8

Schließen Sie die Tabellen, die Sie nicht wollen, zu Backup

pg_dump -U "postgres" -h "local" -p "5432" 
     -d dbName -F c -b -v -f c:\uti\backup.dmp 
     --exclude-table-data '*.table_name_pattern_*' 
     --exclude-table-data 'some_schema.another_*_pattern_*' 

Die Funktion Erstellungscode Teil des Schemas ist.

+0

Also selbst wenn ich die Tabelle ausschließe, wird die Anweisung 'CREATE TABLE' immer noch im Backup sein? Auch ... sieht so aus, als könnte ich mehrere '--exclude-table-data' Parameter eingeben? –

+0

Ja, es schließt nur die Tabellendaten aus. Die Anweisung zur Tabellenerstellung wird an die Sicherung ausgegeben. Ja multiple '--exclude-table-data' –

+0

älter als 9.2 muss dies in zwei Schritten tun: Der erste Schritt ist die Sicherung des Datenbankschemas ' pg_dump --schema-only' Der zweite Schritt besteht darin, Tabellendaten zu sichern ausgenommen bestimmte Tabelle 'pg_dump - nur Daten --exclude-Tabelle' – FiruzzZ