POSTGRES - 如何创建一个可以连接两个数据库的选择查询?

时间:2012-02-29 03:48:24

标签: sql postgresql join

我在加入2数据库时遇到问题。首先..我尝试使用此查询:

   SELECT * 
     FROM my_db1.table1 tb1 
LEFT JOIN my_db2.table2 tb2 ON tb2.code = tb1.code

我收到以下错误:

  

架构“my_db2”不存在。

所以我试过了:

SELECT * 
  FROM dblink('my_db2', 'SELECT * FROM table2')

但它仍然不起作用 我该怎么做,从两个不同数据库中的表中进行选择?

1 个答案:

答案 0 :(得分:3)

这应该与dblink一起用于同一群集中的两个数据库,其中主叫用户具有两者的必要权限。通过与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)

缺少两件事:连接字符串和列定义列表。

但是,我会在视图或表函数中封装对外表的访问。 I quote the manual

  

将dblink与预定查询一起使用的便捷方法是创建   一个看法。这允许列类型信息埋没在   查看,而不是必须在每个查询中拼写出来。