在PostgreSQL中,跨数据库调用视图通常涉及到两个步骤:
- 在目标数据库中创建一个外部数据包装器(Foreign Data Wrapper, FDW),以允许连接到源数据库。
- 使用这个外部数据包装器创建一个外部表,然后可以像使用本地表一样查询这个外部表。
以下是一个简化的例子:
步骤1: 首先确保你的PostgreSQL服务器配置了FDW支持,并安装了适当的驱动(例如,对于另一个PostgreSQL服务器,通常是postgres_fdw)。
-- 在源数据库中安装fdw扩展
CREATE EXTENSION postgres_fdw;步骤2: 创建外部数据包装器并连接到源数据库。
-- 在目标数据库中创建外部数据包装器连接
CREATE SERVER source_server_fdw FOREIGN DATA WRAPPER postgres_fdw
CONNECTION 'host=source_host user=source_user dbname=source_db password=source_password';步骤3: 创建外部表以便访问源数据库中的数据。
-- 在目标数据库中创建外部表
CREATE FOREIGN TABLE target_db.external_view (
-- 列定义要与源视图的结构匹配
) SERVER source_server_fdw
OPTIONS (schema_name 'public', table_name 'source_view');步骤4: 查询外部表就像查询本地表一样。
SELECT * FROM target_db.external_view;请注意,这里的source_server_fdw是你为源数据库创建的服务器名称,source_host是源数据库服务器的主机名,source_user是用于连接的用户,source_db是源数据库的名称,source_password是该用户的密码,target_db是目标数据库的名称,external_view是你创建的外部表的名称,source_view是源数据库中你想要访问的视图的名称。
确保你的PostgreSQL用户有权限创建服务器和外部表,并且源数据库的配置允许远程连接。