2014-07-15 15 views
8

Mam serwer db postgresql, który ma wiele baz danych w nim.Jak uzyskać pg_dump -s, aby uwzględnić polecenie 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) 

Potrzebuję sposób, aby utworzyć plik zrzutu, który zawiera schemat - w tym CREATE DATABASE oświadczenie - dla bazy danych Próbuję zrzucić.

tej pory mam zorientowali się, że:

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

stworzy schemat tylko dla bazy test1, ale nie obejmuje komendę CREATE DATABASE. Jedynym sposobem udało mi się dostać CREATE DATABASE polecenia wyświetlane było zrobić:

pg_dumpall -s -U postgres > /schema_alldatabases.sql 

zrzuci schematu dla wszystkich baz danych. Ale to oczywiście obejmuje wszystkie schematy dla wszystkich baz danych. Na serwerze, na którym mam zamiar przywrócić ten plik, mam już test3 i test4 ... i nie chcę ich zastępować, ponieważ schematy są różne.

Czy mimo to komenda pg_dump -s zawiera komendę CREATE DATABASE? Czy powinienem po prostu użyć pg_dumpall i kontrolować to, co przywracam? jeśli tak, czy możesz pokazać mi, jak mogę przywrócić test1 z pliku zrzutu?

Dzięki.

Odpowiedz

10

Zastosowanie --create lub -C opcja

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

Rozpocznij wyjście z poleceniem, aby utworzyć bazę danych i podłączyć się do utworzonej bazy danych. (W przypadku skryptu tego formularza nie ma znaczenia, z której bazy danych w instalacji docelowej łączy się przed uruchomieniem skryptu). Jeśli podano również --clean, skrypt opuszcza i odtwarza docelową bazę danych przed ponownym połączeniem się z nią.

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

Powiązane problemy