PostgreSQL跨库操作(dblink、postgres_fdw)
2021/7/9 19:17:11
本文主要是介绍PostgreSQL跨库操作(dblink、postgres_fdw),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
PostgreSQL跨库操作(dblink、postgres_fdw)
- 背景信息
- 注意事项
- 一、使用dblink
- 1、新建dblink插件。
- 2、创建dblink连接。
- 二、使用postgres_fdw
- 1、新建一个数据库。
- 2、新建postgres_fdw插件。
- 3、新建远程数据库服务器。
- 4、导入外部表。
使用PostgreSQL本身提供的扩展插件,例如dblink和postgres_fdw,可以跨库操作表。
背景信息
阿里云RDS for PostgreSQL云盘版实例开放dblink和postgres_fdw插件,支持相同VPC内实例(包括自建PostgreSQL数据库)间的跨库操作。如果要访问VPC外部的其他实例,可以通过相同VPC内ECS的端口跳转实现。
注意事项
PostgreSQL云盘版的dblink和postgres_fdw插件进行跨库操作的注意事项如下:
相同VPC内的ECS/RDS PostgreSQL实例可以直接跨库操作。
RDS PostgreSQL实例可以通过本VPC内的ECS实例进行端口跳转,实现跨库操作。
自建PostgreSQL实例可以通过oracle_fdw或mysql_fdw连接VPC外部的Oracle实例或MySQL实例。
连接自身跨库操作时,host请填写localhost,port请填写show port命令返回的本地端口。
一、使用dblink
1、新建dblink插件。
create extension dblink;
2、创建dblink连接。
postgres=> select dblink_connect('<连接名称>', 'host=<同一VPC下的另一RDS的内网域名> port=<同一VPC下的另一RDS的内网监听端口> user=<远程数据库用户名> password=<密码> dbname=<库名>'); postgres=> SELECT * FROM dblink('<连接名称>', '<SQL命令>') as <表名>(<列名> <列类型>);
示例
postgres=> select dblink_connect('a', 'host=pgm-bpxxxxx.pg.rds.aliyuncs.com port=3433 user=testuser2 password=passwd1234 dbname=postgres'); postgres=> select * from dblink('a','select * from products') as T(id int,name text,price numeric); //查询远端表
更多详情请参见dblink https://www.postgresql.org/docs/12/dblink.html。
二、使用postgres_fdw
1、新建一个数据库。
postgres=> create database <数据库名>; //创建数据库 postgres=> \c <数据库名> //切换数据库
示例
postgres=> create database db1; CREATE DATABASE postgres=> \c db1
2、新建postgres_fdw插件。
db1=> create extension postgres_fdw;
3、新建远程数据库服务器。
db1=> CREATE SERVER <server名称> FOREIGN DATA WRAPPER postgres_fdw OPTIONS ( host '<同一VPC下的另一RDS的内网域名>, port '<同一VPC下的另一RDS的内网监听端口>', dbname '<同一VPC下的另一RDS的库名>' );
db1=> CREATE USER MAPPING FOR <本地数据库用户名> SERVER <server名称> OPTIONS ( user '<远程数据库用户名>', password '<远程数据库密码>' );
示例
db1=> CREATE SERVER foreign_server1 FOREIGN DATA WRAPPER postgres_fdw OPTIONS ( host 'pgm-bpxxxxx.pg.rds.aliyuncs.com', port '3433', dbname 'postgres' ); CREATE SERVER db1=> CREATE USER MAPPING FOR testuser SERVER foreign_server1 OPTIONS ( user 'testuser2', password 'passwd1234' ); CREATE USER MAPPING
4、导入外部表。
db1=> import foreign schema public from server foreign_server1 into <SCHEMA名称>; //导入外部表
db1=> select * from <SCHEMA名称>.<表名> //查询远端表
示例
db1=> import foreign schema public from server foreign_server1 into ft; IMPORT FOREIGN SCHEMA db1=> select * from ft.products;
更多详情请参见postgres_fdw https://www.postgresql.org/docs/12/postgres-fdw.html。
来源 :https://help.aliyun.com/document_detail/142422.html
这篇关于PostgreSQL跨库操作(dblink、postgres_fdw)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-05快速清空 PostgreSQL 数据库中的所有表格,让你的数据库重新焕然一新!
- 2024-01-04在PostgreSQL中创建角色:判断角色是否存在并创建
- 2023-05-16PostgreSQL一站式插件推荐 -- pg_enterprise_views
- 2022-11-22PostgreSQL 实时位置跟踪
- 2022-11-22如何将PostgreSQL插件移植到openGauss
- 2022-11-11PostgreSQL:修改数据库用户的密码
- 2022-11-06Windows 环境搭建 PostgreSQL 物理复制高可用架构数据库服务
- 2022-10-27Windows 环境搭建 PostgreSQL 逻辑复制高可用架构数据库服务
- 2022-10-11PostgreSql安装(Windows10版本)
- 2022-09-13PostgreSQL-Network Address类型操作和函数