在MacOS下具有MacPorts的PostgreSQL 12 / PostGIS 3.0安装中,如何使用postgis_restore.pl脚本?

问题描述 投票:0回答:2

我重新安装了PostgreSQL 12 / PostGIS 3.0,并在MacOS(Mojave)下使用MacPorts完成了安装,我尝试使用传统脚本postis_restore.pl恢复启用PostGIS的数据库。

我首先创建了一个启用了PostGIS 3.0的空数据库。我的数据库转储来自带有PostGIS 2.5的PosgtresSQL 9.4。这是使用-Fc格式完成的。

我尝试:

perl /opt/local/share/postgresql12/contrib/postgis-3.0/postgis_restore.pl /Users/me/Documents/db/dump_file.dump | psql -h localhost -U postgres target_db 2>errors.txt

我得到以下答案:

Converting /Users/me/Documents/db/dump_file.dump to ASCII on stdout...
Reading list of functions to ignore...
Writing manifest of things to read from dump file...
Writing ASCII to stdout...
ALTER TABLE
ALTER TABLE
pg_restore: error: one of -d/--dbname and -f/--file must be specified
Done.
SELECT 8500
DELETE 8500
UPDATE 0
INSERT 0 8500
DROP TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE

如何解决:

pg_restore: error: one of -d/--dbname and -f/--file must be specified

谢谢

postgresql postgis macports
2个回答
0
投票

似乎您忘记了转储中可以包含的数据库比数据库还多。即使您的文件中只有一个数据库,也只需告知您要还原的数据库即可。查看pg_restore文档也可能有帮助。


0
投票

在PostgreSQL 12中,pg_restore的行为已更改为要求-f或-d。以前,如果未指定,则将其输出流式传输到stdout,现在可以通过指定-f -获得该行为。之所以被更改,是因为许多人对旧的行为感到困惑(尽管更改本身也令人困惑)。

显然,postgis_restore.pl从未更新过以反映此更改。您应该能够找到调用pg_restore的位置并将其添加为-f -。尽管考虑到该脚本似乎从未经过测试,但我会谨慎使用它,而无需进一步审核。

© www.soinside.com 2019 - 2024. All rights reserved.