2015-02-04 7 views
7

Quando si utilizza pg_dump, è possibile utilizzare una stringa di connessione Postgres per specificare l'host/database/nome utente/password:In pg_restore, come si può usare una stringa di connessione postgres per specificare l'host/database/nome utente/password?

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

voglio usare lo stesso tipo di stringa di connessione per pg_restore:

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

ma ottengo un errore:

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

Il [manuale è chiaro] (http://www.postgresql.org/docs/current/static/app-pgrestore.html) sui flag che è necessario utilizzare. – pozs

+0

Il manuale dice: pg_restore [connessione-opzione ...] [opzione ...] [nome file] quando provo: pg-restore postgres: // userb: [email protected]: 5432/otherdatabase -f dump.dump Ricevo lo stesso errore –

+0

e perché pensi che * [connection-options] * possa accettare un URL di connessione completa? Questo non è ciò che dice il manuale. – pozs

risposta

20

In strumenti di PostgreSQL, ovunque è possibile specificare un nome di database è possibile invece specificare un connec stringa di istruzioni.

Nella sintassi per pg_restore il dbname viene passato con una bandiera, non come un parametro posizionale:

$ 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 
    ... 

così si dovrebbe usare:

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

Sì, è mancata corrispondenza interfaccia utente tra pg_dump e pg_restore fa schifo, e vorrei che potessimo cambiarlo, ma è un po 'tardi ora.

Problemi correlati