我们已经使用pg_dump转储了一个使用postgis扩展的数据库。在另一台计算机上手动创建数据库后,尝试使用psql将转储加载到其中失败。原来,转储没有包含必要的声明
CREATE EXTENSION postgis;
postgis扩展安装在Postgres的目标实例中,但只有在手动执行转储的CREATE EXTENSION
加载成功后才能安装。这似乎不是什么大问题,但问题是:是否可以强制pg_dump
将所有必需的CREATE EXTENSION foo;
语句写入转储中,这样我就不必这样做了手动吗?我在pg_dump
在线文档中没有看到任何选项。
答案 0 :(得分:3)
几种可能性:
此数据库已从旧版本升级,其中CREATE EXTENSION
尚不存在。
有人错误地通过执行SQL脚本而不是运行CREATE EXTENSION
来安装PostGIS。
您不会转储整个数据库,而是使用-n
选项将转储限制为架构。
答案 1 :(得分:1)
您可以使用它来转储架构和扩展(在11.2上测试):
pg_dump -U postgres -d mydb -s > dump.sql