连接来自不同数据库的表(PostgreSQL)

时间:2018-01-27 11:18:29

标签: sql postgresql join cross-database

是否可以使用PostgreSQL连接位于同一服务器的不同数据库中的表?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:4)

您可以使用dblinkforeign_tablepostgresql_fdw

  1. DBLINK
  2. dblink是一个模块,支持从数据库会话中连接到其他PostgreSQL数据库。

    您可以阅读文档here

    1. 外国表
    2. postgres_fdw模块提供外部数据包装器postgres_fdw,可用于访问存储在外部PostgreSQL服务器中的数据。 此模块提供的功能与旧版dblink模块的功能基本重叠。但postgres_fdw为访问远程表提供了更透明和符合标准的语法,并且在许多情况下可以提供更好的性能。

      您可以阅读文档here

答案 1 :(得分:1)

假设您在postgres中位于数据库db1中。然后,

SELECT * FROM table1 tb1 LEFT JOIN (SELECT * FROM dblink('dbname=db2','SELECT id, code FROM table2') AS tb2(id int, code text);) USING (code)

将在所述列上加入tb1和tb2(来自不同数据库的另一个表)。在示例中,我使用dblink来执行此操作。 tb1tb2代表您的表格。将table1table2替换为您的表名,将db2替换为您的其他数据库名称。