在 pg_restore 中,如何使用 postgres 连接字符串来指定 host/database/username/password?
In pg_restore, how can you use a postgres connection string to specify the host/database/username/password?
使用 pg_dump 时,可以使用 postgres 连接字符串指定 host/database/username/password:
pg_dump postgres://someuser:somepassword@somehost.com:5432/somedatabase
我想为 pg_restore 使用相同类型的连接字符串:
pg_restore -f dump.dump postgres://userb:somepassword@somehost.com:5432/otherdatabase
但是我得到一个错误:
pg_restore: [archiver] could not open input file "postgres://userb:somepassword@somehost.com:5432/otherdatabase": No such file or directory
在 PostgreSQL 工具中,只要您可以指定数据库名称,您就可以指定连接字符串。
在 pg_restore
的语法中,dbname 是通过标志传递的,而不是作为位置参数:
$ 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
...
所以你应该使用:
pg_restore -d 'postgres://userb:somepassword@somehost.com:5432/otherdatabase' dump.dump
是的,pg_dump
和 pg_restore
之间的用户界面不匹配很糟糕,我希望我们可以改变它,但现在有点晚了。
使用 pg_dump 时,可以使用 postgres 连接字符串指定 host/database/username/password:
pg_dump postgres://someuser:somepassword@somehost.com:5432/somedatabase
我想为 pg_restore 使用相同类型的连接字符串:
pg_restore -f dump.dump postgres://userb:somepassword@somehost.com:5432/otherdatabase
但是我得到一个错误:
pg_restore: [archiver] could not open input file "postgres://userb:somepassword@somehost.com:5432/otherdatabase": No such file or directory
在 PostgreSQL 工具中,只要您可以指定数据库名称,您就可以指定连接字符串。
在 pg_restore
的语法中,dbname 是通过标志传递的,而不是作为位置参数:
$ 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
...
所以你应该使用:
pg_restore -d 'postgres://userb:somepassword@somehost.com:5432/otherdatabase' dump.dump
是的,pg_dump
和 pg_restore
之间的用户界面不匹配很糟糕,我希望我们可以改变它,但现在有点晚了。