2014-07-15 9 views
8

Ich habe einen Postgresql-Datenbankserver, der mehrere Datenbanken enthält.Wie bekomme ich eine pg_dump -s, um den Befehl CREATE DATABASE einzuschließen?

postgres=# \list 
           List of databases 
    Name  | Owner | Encoding | Collate | Ctype | Access privileges 
--------------+----------+-----------+---------+-------+----------------------- 
test1  | postgres | UTF8  | C  | C  | 
test2  | postgres | SQL_ASCII | C  | C  | 
test3  | postgres | SQL_ASCII | C  | C  | 
test4  | postgres | SQL_ASCII | C  | C  | 
template0 | postgres | SQL_ASCII | C  | C  | =c/postgres   + 
       |   |   |   |  | postgres=CTc/postgres 
template1 | postgres | SQL_ASCII | C  | C  | postgres=CTc/postgres+ 
       |   |   |   |  | =c/postgres 
(6 rows) 

Ich brauche einen Weg, um eine Abbilddatei zu erstellen, die das Schema enthält - einschließlich einer Anweisung CREATE DATABASE - für die Datenbank I zu dump bin versucht.

Bisher habe ich herausgefunden, dass:

pg_dump -s -U postgres -d test1 > test1_only.sql 

das Schema erstellen wird nur für die Test1-Datenbank, aber es enthält nicht den Befehl CREATE DATABASE. Der einzige Weg, ich in der Lage war, den Befehl CREATE DATABASE zu erhalten zu erscheinen zu tun war:

pg_dumpall -s -U postgres > /schema_alldatabases.sql 

wird das Schema für alle Datenbanken Dump. Aber das schließt dann natürlich alle Schemata für alle Datenbanken ein. Auf dem Server, auf dem ich diese Datei wiederherstellen werde, habe ich bereits test3 und test4 ... und ich möchte sie nicht überschreiben, da die Schemas unterschiedlich sind.

Gibt es trotzdem den Befehl pg_dump -s, der den Befehl CREATE DATABASE enthält? Oder soll ich einfach den pg_dumpall verwenden und kontrollieren, was ich wiederherstelle? Wenn ja, kannst du mir zeigen, wie ich test1 einfach aus der Dump-Datei wiederherstellen kann?

Danke.

Antwort

10

Verwenden --create oder -C Option

pg_dump --create -s -U postgres -d test1 > test1_only.sql 

die Ausgabe mit einem Befehl beginnen, um die Datenbank selbst und wieder an die erstellte Datenbank zu erstellen. (Bei einem Skript dieses Formulars spielt es keine Rolle, mit welcher Datenbank in der Zielinstallation Sie vor dem Ausführen des Skripts eine Verbindung herstellen.) Wenn --clean ebenfalls angegeben wird, löscht das Skript die Zieldatenbank und erstellt sie neu, bevor sie erneut verbunden wird.

http://www.postgresql.org/docs/current/static/app-pgdump.html

Verwandte Themen