我有两个数据库:
行政
Table
: 员工Columns
: id, name, city_id连接
Table
: 城市Columns
: id, name_of_city
我想在 postgre 数据库中使用Employee.city_id
&City.id
列加入这两个表。
我怎样才能做到这一点
我有两个数据库:
行政
Table
: 员工
Columns
: id, name, city_id
连接
Table
: 城市
Columns
: id, name_of_city
我想在 postgre 数据库中使用Employee.city_id
&City.id
列加入这两个表。
我怎样才能做到这一点
根据Postgresql 常见问题解答,除了当前数据库之外,没有直接的方法可以查询数据库。但是您可以使用dblink。dblink 是一个支持从数据库会话中连接到其他 PostgreSQL 数据库的模块。
您希望postgres_fdw
在 PostgreSQL 9.3 中可用。它是一个 SQL/MED 外部数据包装器,可让您创建到远程表的“链接”。
您可以将 City 表链接到 Admin 数据库,然后从普通 SQL 查询它。PostgreSQL 甚至会做一些事情,比如在远程WHERE
端运行一个条件并且只获取所需的行。它仍然比本地表效率低很多,因为许多连接类型不可用,并且在使用它之前传输数据存在开销。
从技术上讲,这可以通过 postgres 模块dblink实现,它允许您跨数据库连接。
话虽如此,当您考虑与跨数据库维护外键相关的一些架构和数据完整性问题时,您可能应该考虑仅将city
表及其数据从connect
数据库移动到admin
数据库。
尝试这个
SELECT e.id as emp_id,e.name,e.city_id,c.* FROM 'admin'.'employee' as e ,'connect'.'city' as c WHERE e.city_id = c.id;