其他分享
首页 > 其他分享> > PG-访问外部数据源数据之file_fdw插件

PG-访问外部数据源数据之file_fdw插件

作者:互联网

SQL/MED(SQL Management of External Data )

PostgreSQL可以使用SQL/MED特性功能通过SQL语句访问外部数据源的数据。实现类似Oracle dblink的功能。

数据流向图

image-20210925204117584

支持访问的外部数据源类型

文件(file_fdw)

在 PostgreSQL 数据库中访问数据库主机文件,文件需具备一定的格式,如:CSV和TEXT。它需要file_fdw插件扩展支持。

数据库
关系型数据库

在 PostgreSQL 数据库中访问远程的数据库,例如 PostgreSQL,Oracle ,MySQL,SQL Server 等。

非关系型数据库

MongoDB 、Red is 、Cassandra 等非关系型数据库

大数据

ElasticSearch 、Hadoop 等

file_fdw

基于文件类型的外部数据源的访问,PostgreSQL 使用 file_fdw 外部扩展访问本地文件,文件的格式要求为 text 、csv 或者 binary

file_fdw 插件使用步骤

  1. 创建 file_fdw 外部扩展
  2. 创建 foreign server 外部服务(即:指连接外部数据源的连接信息)
  3. 设置本地文件格式为 file_fdw 可识别的格式
  4. 创建外部表

配置步骤

创建 file_fdw 插件

需要超级权限用户登录PostgreSQL

CREATE EXTENSION file_fdw;

创建 foreign server 外部服务

CREATE SERVER svc_file FOREIGN DATA WRAPPER file_fdw ;
检查确认
-- 通过 \des 元命令查询当前库中已创建的外部服务
\des

创建测试文件

cat > /tmp/f1.txt <<-EOF
1	a
2	b
3	c
EOF

创建外部表

CREATE FOREIGN TABLE f1_test (
  id int4,
  flag text
) SERVER svc_file
OPTIONS (filename '/tmp/f1.txt', format 'text');

OPTIONS 参数指定 file_fdw 的选项:

查看外部表
-- 通过 \det 元命令查看当前数据库中的外部表列表
\det
通过外部表访问文件数据
select * from f1_test;

外部表实质上不存储数据,只是指向外部数据源的一个链接,可理解成操作系统层面的软链接,数据依旧存储在外部数据源中 。 通过 file_fdw 外部扩展使 PostgreSQL 数据库就像访问数据库表一样访问外部文件。

目前基于 file_fdw 的外部表仅支持只读,不支持 INSERT/UPDATE/DELETE 操作

file_fdw 应用场景

标签:文件,插件,fdw,外部,数据源,数据库,file
来源: https://www.cnblogs.com/binliubiao/p/15335635.html