2015-02-04 16 views
7

Podczas korzystania pg_dump, można użyć postgres'owy ciąg połączenia, aby określić host/baza danych/nazwa użytkownika/hasło:W pg_restore, w jaki sposób można użyć ciągu połączenia postgres do określenia hosta/bazy danych/nazwy użytkownika/hasła?

pg_dump postgres://someuser:[email protected]:5432/somedatabase 

chcę użyć tego samego rodzaju ciąg połączenia dla pg_restore:

pg_restore -f dump.dump postgres://userb:[email protected]:5432/otherdatabase 

ale pojawia się błąd:

pg_restore: [archiver] could not open input file "postgres://userb:[email protected]:5432/otherdatabase": No such file or directory 
+0

Instrukcja [jest czytelna] (http://www.postgresql.org/docs/current/static/app-pgrestore.html) na temat flag, których należy użyć. – pozs

+0

Instrukcja mówi: pg_restore [połączenie-opcja ...] [opcja ...] [nazwa pliku] kiedy próbuję: pg-restore postgres: // userb: [email protected]: 5432/otherdatabase -f dump.dump Otrzymuję ten sam błąd –

+0

i dlaczego według Ciebie * [opcje połączeń] * może akceptować pełny adres URL połączenia? To nie jest to, co mówi podręcznik. – pozs

Odpowiedz

20

W narzędzi PostgreSQL gdziekolwiek można określić nazwę bazy danych można zamiast określić CONNEC ciąg znaków.

W składni dla pg_restore DBNAME jest przekazywana z flagą, a nie jako pozycyjnej parametru:

$ pg_restore --help 
pg_restore restores a PostgreSQL database from an archive created by pg_dump. 

Usage: 
    pg_restore [OPTION]... [FILE] 

General options: 
    -d, --dbname=NAME  connect to database name 
    ... 

więc należy używać:

pg_restore -d 'postgres://userb:[email protected]:5432/otherdatabase' dump.dump 

Tak, że niedopasowanie interfejs pomiędzy pg_dump i pg_restore jest do dupy i chciałbym, żebyśmy mogli to zmienić, ale teraz jest już za późno.