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.