dblink
PostgreSQL 扩展 允许您连接到其他 PostgreSQL 数据库并运行任意查询。
您可以使用外部数据包装器 (FDW) 来定义远程 外部服务器
以访问其数据。数据库连接详细信息(如主机名)保存在一个位置,您只需要创建一个 用户映射
来存储远程连接凭据。
在开始之前,请登录您的 Managed Service for TimescaleDB 门户,导航到 概览
选项卡,并记下 PostgreSQL 远程服务器的这些参数。或者,您可以使用 Aiven 客户端中的 avn service get
命令
HOSTNAME
:远程数据库主机名PORT
:远程数据库端口USER
:要连接的远程数据库用户。默认用户是tsdbadmin
。PASSWORD
:USER
的远程数据库密码DATABASE_NAME
:远程数据库名称。默认数据库名称是defaultdb
。
要在 MST PostgreSQL 服务上启用 dblink
扩展
以
tsdbadmin
用户身份连接到数据库psql -x "postgres://tsdbadmin:<PASSWORD>@<HOSTNAME>:<PORT>/defaultdb?sslmode=require"创建
dblink
扩展CREATE EXTENSION dblink;创建一个名为
inventory
的表CREATE TABLE inventory (id int);将数据插入到
inventory
表中INSERT INTO inventory (id) VALUES (100), (200), (300);
创建一个可以访问
dblink
的用户user1
CREATE USER user1 PASSWORD 'secret1'创建一个名为
mst_remote
的远程服务器定义,使用dblink_fdw
和 MST 服务的连接详细信息。CREATE SERVER mst_remoteFOREIGN DATA WRAPPER dblink_fdwOPTIONS (host 'HOST',dbname 'DATABASE_NAME',port 'PORT');为
user1
创建一个用户映射,以便在使用dblink
时自动以tsdbadmin
身份进行身份验证CREATE USER MAPPING FOR user1SERVER mst_remoteOPTIONS (user 'tsdbadmin',password 'PASSWORD');允许
user1
使用远程 PostgreSQL 连接mst_remote
GRANT USAGE ON FOREIGN SERVER mst_remote TO user1;
在此示例中,user1
用户从 mst_remote
服务器定义查询目标 PostgreSQL 数据库中定义的远程表 inventory
要查询外部数据包装器,您必须是具有远程服务器上必要权限的数据库用户。
以
user1
身份连接到 MST 服务,并具有远程服务器的必要授权。建立到远程目标服务器的
dblink
连接SELECT dblink_connect('my_new_conn', 'mst_remote');使用外部服务器定义作为参数进行查询
SELECT * FROM dblink('my_new_conn','SELECT * FROM inventory') AS t(a int);
输出类似于
a-----100200300(3 rows)
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页。