Ho un server db postgresql con più database al suo interno.Come ottenere un pg_dump -s per includere il comando CREATE DATABASE?
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)
Ho bisogno di un modo per creare un file di dump che contiene lo schema - inclusa una dichiarazione CREATE DATABASE - per il database che sto cercando di eseguire il dump.
Finora, ho capito che:
pg_dump -s -U postgres -d test1 > test1_only.sql
creerà lo schema solo per il database test1, ma non include il comando CREATE DATABASE. L'unico modo sono stato in grado di ottenere il comando CREATE DATABASE ad apparire è stato quello di fare:
pg_dumpall -s -U postgres > /schema_alldatabases.sql
sarà scaricare lo schema per tutti i database. Ma questo, naturalmente, include tutti gli schemi per tutti i database. Sul server su cui ho intenzione di ripristinare questo file, ho già test3 e test4 ... e non voglio sovrascriverli, poiché gli schemi sono diversi.
È comunque necessario che il comando pg_dump -s includa il comando CREATE DATABASE? Oppure, dovrei semplicemente usare pg_dumpall e controllare cosa ripristino? se è così, puoi mostrarmi come posso ripristinare test1 dal file dump?
Grazie.