我在加入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')
但它仍然不起作用 我该怎么做,从两个不同数据库中的表中进行选择?
答案 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与预定查询一起使用的便捷方法是创建 一个看法。这允许列类型信息埋没在 查看,而不是必须在每个查询中拼写出来。