2014-01-29 18 views

Antwort

35

pg_restore, wenn es ohne einen Datenbanknamen ausgeführt wird, wird ein Textspeicherauszug an stdout ausgegeben; Sie können das an anderer Stelle mit -f oder mit I/O-Umleitung senden.

pg_restore -f mydatabase.sql mydatabase.dump 
+1

Wenn ich das versuche, bekomme ich 'pg_restore: [archiver] Eingabedatei scheint kein gültiges Archiv zu sein. Ich kann Ihnen versichern, dass die Dumps mit der gleichen Version von postgresql 8.4.17 erstellt wurden. – sorin

+0

Entschuldigung, ich habe gerade herausgefunden, dass der Typ, der die Backups erstellt hat, sie nach der Verwendung von "FC" gezippt hat! ...und mc view zeigte mir den unkomprimierten Inhalt auf Datei-Ansicht ... – sorin

+0

das hat funktioniert, danke – Tom

5

Die schnellste Methode, die ich verwendet habe, war:

pg_restore mybinaryfile.backup > mysqlfile.sql 

Keine besonderen Flags, da pg_restore es nur spuckt auf stdout aus.

0

Beachten Sie, wenn Sie mehrere Cluster ausgeführt werden, der Befehl wiederherstellen kann die Standardversion nicht wie ...

pg_restore: [Archivierungs] nicht unterstützte Version (1.12) in der Datei-Header

In diesem Fall müssen Sie die Version, Host und Port, wie in spezifizieren:

pg_restore --cluster 9.1/localhost:5433 -f db.sql db.pgsql 

(. beachten Sie, dass die host:port info mit der Option -f ignoriert wird)

Der Hafen (5433) können Sie sich als mit dem pgsql Befehl ermittelt werden:

pgsql --port 5433 template1 

Wenn pgsql eine Verbindung herstellt, schreibt einen Kommentar wie:

psql (9.3.6, Server 9.1.13)

Dies bedeutet, dass Sie pgsql 9.3.6 ausführen und dass Port 5433 den Server 9.1.13 referenziert.

Wenn Sie nicht sicher sind, welche Ports derzeit verwendet werden, können Sie den Befehl netstat wie in verwenden:

sudo netstat -a64np | grep LISTEN | grep postgres 

Die sudo ist erforderlich für die -p Option, die den Prozessnamen druckt. Das gibt Ihnen eine Liste von Ports (normalerweise TCP- und UDP-Ports).

schließlich auf einem Debian/Ubuntu-System, können Sie eine Liste der installierten Cluster mit dem dpkg -l Befehl wie in bekommen können:

dpkg -l '*postgres*' 

Die Liste der Einträge, die mit ‚ii‘ beginnen (am weitesten links stehenden Spalte) sind derzeit installiert. Sie haben natürlich ähnliche Befehle für andere Unices, die Ihnen helfen, installierte Versionen zu bestimmen.