PostgreSQL文件外部表使用(file_fdw)

一、file_fdw简介
file_fdw模块提供外部数据包装器file_fdw, 它能被用来访问服务器的文件系统中的数据文件,或者在服务器上执行程序并读取它们的输出。 数据文件或程序输出必须是能够被COPY FROM读取的格式,当前只能读取数据文件。
二、file_fdw安装和使用

1、安装file_fdw

同postgres_fdw扩展。file_fdw在pg安装包中已内置,默认没有安装。使用以下语句安装file_fdw扩展

create extension file_fdw ;

2、创建外部服务器

create server server_file_fdw foreign data wrapper file_fdw;

3、创建外部表

CREATE foreign TABLE "public"."fdw_user" (
  "id" varchar(36) COLLATE "pg_catalog"."default" NOT NULL,
  "user_name" varchar(255) COLLATE "pg_catalog"."default",
  "password" varchar(32) COLLATE "pg_catalog"."default",
  "age" int4 DEFAULT 0,
  "sex" bool,
  "moblie" varchar(255) COLLATE "pg_catalog"."default",
  "emali" varchar(255) COLLATE "pg_catalog"."default",
  "create_time" date,
  "note" varchar(255) COLLATE "pg_catalog"."default",
  "real_name" varchar(255) COLLATE "pg_catalog"."default"
) server server_file_fdw  options (filename '/home/user/temp/tb_user.csv');

选项如下:
PostgreSQL文件外部表使用(file_fdw)_第1张图片
注:使用file_fdw创建的外部表只能查看,不允许修改操作。

三、 创建外部表读取PostgreSQL日志
1、安装file_fdw扩展

CREATE EXTENSION file_fdw;

2、创建外部服务器

CREATE SERVER pglog FOREIGN DATA WRAPPER file_fdw;

3、创建外部表

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' );

现在你能够直接查询你的日志了。当然,在生产中你会需要定义一些方法来处理日志轮转。

本文借鉴pg12的官方文档

你可能感兴趣的:(#postgresSql,数据库)