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