zoukankan      html  css  js  c++  java
  • 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 的选项:

    • filename: 指定要访问的文件路径和名称,需指定文件的绝对路径
    • format: 指定文件的格式,支持的格式为 text 、csv 、binary 。默认为 text 。
    • header: 指定文件是否包含字段名 称行, 此选项仅对 csv 格式有效, 通常将数据库表数据导出到文件时才会使用此选项
    • delimiter:设置字段的分隔符,text 格式的文件字段分隔符默认为 tab 键
    • encoding:设置文件的编码
    查看外部表
    -- 通过 det 元命令查看当前数据库中的外部表列表
    det
    
    通过外部表访问文件数据
    select * from f1_test;
    

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

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

    file_fdw 应用场景

    • 通过外部表访问 PostgreSQL 数据库的 csv 日志,方便分析数据库运行日志。
      1. 配置 postgresql.conf 文件,修改日志格式为csv
      2. 其它步骤参考上面配置步骤过程
  • 相关阅读:
    268. Missing Number
    217. Contains Duplicate
    189. Rotate Array
    Two Sum II
    122. Best Time to Buy and Sell Stock II
    169. Majority Element
    C# ConfigurationManager不存在问题解决
    C# sqlhelper
    C#基础
    数据库事务日志已满的解决办法
  • 原文地址:https://www.cnblogs.com/binliubiao/p/15335635.html
Copyright © 2011-2022 走看看