PostgreSQL本身并不原生支持跨数据库查询,正如错误信息所示,但有一些变通方法可用。其中一种方法是使用postgres_fdw
扩展。
postgres_fdw
(外部数据包装器)允许您连接到任何PostgreSQL数据库中的表,无论其位置如何。要使用此扩展:
确保您的Postgres版本支持postgres_fdw
(建议使用v9.3或更高版本)。
在您希望执行跨数据库查询的每个数据库中安装postgres_fdw
扩展。
创建外部服务器和用户映射:
<code class="language-sql"> postgres=# CREATE SERVER foreign_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'remote_host', port '5432'); postgres=# CREATE USER MAPPING FOR CURRENT_USER SERVER foreign_server OPTIONS (user 'remote_user', password 'remote_password');</code>
创建外部表:
<code class="language-sql"> postgres=# CREATE FOREIGN TABLE cross_db_table SERVER foreign_server OPTIONS (table_name 'remote_table');</code>
对于9.3之前的Postgres版本,可以使用名为dblink
的函数进行跨数据库查询。虽然它与PostgreSQL一起维护和分发,但其使用方法与postgres_fdw
不同。有关dblink
的更多详细信息,请参阅PostgreSQL文档。
以上是如何跨不同PostgreSQL数据库查询?的详细内容。更多信息请关注PHP中文网其他相关文章!