根据以下错误消息(以及 此 Google 结果),我猜测答案是否定的,但无论如何使用 PostgreSQL 执行跨数据库查询?
databaseA=# select * from databaseB.public.someTableName;
ERROR: cross-database references are not implemented:
"databaseB.public.someTableName"
我正在处理一些跨两个数据库分区的数据,尽管数据实际上在两个数据库之间共享(一个数据库中的用户 ID 列来自另一个数据库中的 users
表)。我不知道为什么这些是两个独立的数据库而不是模式,但是 c’est la vie…
原文由 matt b 发布,翻译遵循 CC BY-SA 4.0 许可协议
注意:正如最初的提问者暗示的那样,如果您在同一台机器上设置两个数据库,您可能想要创建两个 模式- 在这种情况下,您不需要任何特殊的东西来查询它们。
postgres_fdw
使用
postgres_fdw
(外部数据包装器)连接到任何 Postgres 数据库中的表 - 本地或远程。请注意, 其他流行数据源也有外来数据包装器。目前,只有
postgres_fdw
和file_fdw
是 Postgres 官方发行版的一部分。对于 9.3 之前的 Postgres 版本
不再支持这个旧版本,但如果您需要在 2013 年之前的 Postgres 安装中执行此操作,则有一个名为
dblink
的函数。我从未使用过它,但它与 PostgreSQL 的其余部分一起维护和分发。如果您使用的是 Linux 发行版附带的 PostgreSQL 版本,您可能需要安装一个名为 postgresql-contrib 的包。