file_fdw

PostgreSQL好用的file_fdw

1、简介

  • file_fdw 是postgresql 一个插件, 插件的加载及使用及其类似linux 嵌入式驱动的加载及使用。都是通过加载动态库文件来使用。

  • file_fdw 简单理解为创建了一个类似普通表表结构的外表,而该外表执行过程依赖系统函数file_fdw_handler, file_fdw_handler 函数内部使用了针对file_fdw 的外表执行计划生成

  • 查找的几个函数(执行计划只有sequence scan),通过外表读取源文件数据(本机的绝对路径下的文件), 该读取文件方式用了postgresql 内部一直用的COPY协议。

2、支持选项

filename

指定要被读取的文件。必须是一个绝对路径名。 必须指定filenameprogram, 但不能同时指定两个。

program

指定要执行的命令。该命令的标准输出将被读取, 就像使用COPY FROM PROGRAM一样。必须指定programfilename,但不能同时指定两个。

format

指定数据的格式,和COPYFORMAT选项相同。

header

指定数据是否具有一个头部行,和COPYHEADER选项相同。

delimiter

指定数据的定界符字符,和COPYDELIMITER选项相同。

quote

指定数据的引用字符,和COPYQUOTE选项相同。

escape

指定数据的转义字符,和COPYESCAPE选项相同。

null

指定数据的空字符串,和COPYNULL选项相同。

encoding

指定数据的编码,和COPYENCODING选项相同。

3、实例

一种file_fdw的用法是把可用的 PostgreSQL 活动日志变成一个表用于查询。要这样做,首先你必须正在将日志记录到一个 CSV 文件,这里我们称其为pglog.csv。首先,将file_fdw安装为一个扩展:

CREATE EXTENSION file_fdw;

然后创建一个外部服务器:

CREATE SERVER pglog FOREIGN DATA WRAPPER file_fdw;

现在你已经准备好创建外部数据表。使用CREATE FOREIGN TABLE命令,你将需要为该表定义列、CSV 文件名以及格式:

CREATE FOREIGN TABLE pglog (
  log_time timestamp(3) with time zone,
  user_name text,
  database_name text,
  process_id integer,
  connection_from text,
  session_id text,
  session_line_num bigint,
  command_tag text,
  session_start_time timestamp with time zone,
  virtual_transaction_id text,
  transaction_id bigint,
  error_severity text,
  sql_state_code text,
  message text,
  detail text,
  hint text,
  internal_query text,
  internal_query_pos integer,
  context text,
  query text,
  query_pos integer,
  location text,
  application_name text
) SERVER pglog
OPTIONS ( filename '/home/josh/data/log/pglog.csv', format 'csv' );

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值