PostgreSQL创建外部链接表
PostgreSQL从9.1开始增加了外部表访问的功能,这个功能就是数据库直接读取数据库以外的文件,比如csv或者text等类型的文件,暂时不支持DML。
PostgreSQL有各种插件能直连各种异构DB,如oracle_fdw,mysql_fdw,file_fdw等,对数据的迁移是很方便的,这是PG的扩展性较强的一个表现。
一、环境:
PostgreSQL 11.5
创建postgres_fdw插件
CREATE EXTENSION postgres_fdw;
二、使用过程 :
begin;
-- 括号里的三个参数,分别是timescaledb(要连接的表)的ip、端口和数据库名称
CREATE SERVER timescale_db FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '10.10.1.1', port '5432', dbname 'postgres');
-- 括号里的两个参数,分别是timescaledb(要连接的表)数据库的用户名、密码
create user mapping for postgres server timescale_db options(user 'postgres', password '123456');
--创建相关表框架
--DROP FOREIGN TABLE tb_fdw_timescale_XXX;
CREATE FOREIGN TABLE tb_fdw_timescale_XXX
(
time timestamp(6),
code varchar(36) ,
value numeric(12,2) ,
fino int4 ,
create_time timestamp(6),
range char(1)
)
server timescale_db
options (table_name 'tb_ss_emp'); --指定连接的外部表名
commit;
三、查验:
--查看外部表连接情况
select * from pg_foreign_server;
--级联删除外部表
drop SERVER timescale_db CASCADE;
四、总结:
1. 外部表实际不存储数据,只是一张表结构;
2. 9.2版本比9.1版本多了option的选择,9.3又多了collate一些排序的补充,功能进一步完善,现在已有约束default普通表的应有功能;
3. 实用性,对定期的数据抽取但无需入库检查是很方便的,既减少了数据存储,像基于postgresql的greenplum的数据导入导出就非常实用