PostgreSQL中使用外部表

1. 安装file_fdw

需要先安装file_fdw,一般是进到PostgreSQL的源码包中的contrib/file_fdw目录下,执行:

make
make install

然后进入数据库中,执行以下SQL把file_fdw安装上:

CREATE EXTENSION file_fdw;
CREATE SERVER file_fdw_server FOREIGN DATA WRAPPER file_fdw;

2. 建立外部表

就以常见emp表为例;

create foreign table EMP

(

empno    integer not null,

ename    VARCHAR(10),

job      VARCHAR(9),

mgr      integer,

hiredate DATE,

sal      NUMERIC(6,2),

comm     NUMERIC(6,2),

deptno   integer

)SERVER file_fdw_server

OPTIONS (format ‘csv‘,header ‘true‘,filename ‘/home/postgres/emp.log‘, delimiter ‘,‘, null ‘‘);

--后面options里面参数的说明--filename后面是文件名和绝对路径--format是格式,csv是逗号分隔,text表示是tab分隔的方式--delimiter是分隔符--header表示第一行数据是否需要;为true表示不需要;默认为false;为需要--null表示空数据的转化处理,例子中字段‘‘将转化为null

mydb=# select * from emp;

empno | ename  |    job    | mgr  |  hiredate  |   sal   |  comm   | deptno

-------+--------+-----------+------+------------+---------+---------+--------

7369 | SMITH  | CLERK     | 7902 | 1980-12-17 |  800.00 |         |     20

7499 | ALLEN  | SALESMAN  | 7698 | 1981-02-20 | 1600.00 |  300.00 |     30

7521 | WARD   | SALESMAN  | 7698 | 1981-02-22 | 1250.00 |  500.00 |     30

7566 | JONES  | MANAGER   | 7839 | 1981-04-02 | 2975.00 |         |     20

7654 | MARTIN | SALESMAN  | 7698 | 1981-09-28 | 1250.00 | 1400.00 |     30

7698 | BLAKE  | MANAGER   | 7839 | 1981-05-01 | 2850.00 |         |     30

7782 | CLARK  | MANAGER   | 7839 | 1981-06-09 | 2450.00 |         |     10

7788 | SCOTT  | ANALYST   | 7566 | 1987-03-20 | 3000.00 |         |     20

7839 | KING   | PRESIDENT |      | 1981-11-17 | 5000.00 |         |     10

7844 | TURNER | SALESMAN  | 7698 | 1981-09-08 | 1500.00 |    0.00 |     30

7876 | ADAMS  | CLERK     | 7788 | 1987-04-23 | 1100.00 |         |     20

7900 | JAMES  | CLERK     | 7698 | 1981-12-03 |  950.00 |         |     30

7902 | FORD   | ANALYST   | 7566 | 1981-12-03 | 3000.00 |         |     20

7934 | MILLER | CLERK     | 7782 | 1982-01-23 | 1300.00 |         |     10

(14 rows)

通过这样的可以很好对日志分析;当然这个直接用脚本也可以很好实现;不过这也提供了一种方式。

--查考文献 http://blog.osdba.net/521.html

时间: 2024-12-13 02:47:56

PostgreSQL中使用外部表的相关文章

postgresql 日志管理-外部表

postgresql的日志管理比较灵活,可以设置多种格式log_destination='csvlog';调成csvlog后log_line_prefix无效:然后自己写个脚本就可以在数据库中方便的调用了,我这里用的是外部表方式,得装file_fdw扩展: 如果不装就可以考虑直接copy到数据库里去: #!/bin/bash #export PGDATA=/ssd/database/data5433 source ~/.bash_profile if [[ $1 = "" || $2

PostgreSQL中数据库,表,等对象的oid与对象名的对应关系

-bash-4.1$ oid2name Password: All databases: Oid Database Name Tablespace---------------------------------- 16394 benchmarksql pg_default 16459 pg_monitor    pg_default 13241 postgres         pg_default 13236 template0      pg_default 1 template1    

在PostgreSQL中使用oracle_fdw访问Oracle

本文讲述如何在PostgreSQL中使用oracle_fdw访问Oracle上的数据. 1. 安装oracle_fdw 可以参照:oracle_fdw in github 编译安装oracle_fdw之前,需要安装Oracle的客户端程序,通常可以安装轻量级客户端包:oracle instant client,下载地址为:oracle instant client 安装oracle_fdw,可以到网站上: oracle_fdw in github](https://github.com/laur

HIVE外部表 分区表

HIVE外部表 分区表    外部表        创建hive表,经过检查发现TBLS表中,hive表的类型为MANAGED_TABLE. 在真实开发中,很可能在hdfs中已经有了数据,希望通过hive直接使用这些数据作为表内容.        此时可以直接创建出hdfs文件夹,其中放置数据,再在hive中创建表管来管理,这种方式创建出来的表叫做外部表. #创建目录,上传已有文件        hadoop fs -mkdir /data        hadoop fs -put stude

ORACLE外部表总结

外部表介绍 ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文 件.因此,建立外部表时不会产生段.区.数据块等存储结构,只有与表相关的定义放在数据字典中.外部表,顾名思义,存储在数据库外面的表.当存取时才能从 ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容进行修改(INSERT.UPDATE.DELETE操作).不能对外部表建立 索引.因为创建索引就意味着要存在对应的索引记录.而外部表其实在没有存储在数据库中.故在外部是无法建立索

Oracle外部表详解(转载)

(外部表创建主要注意创建目录访问权限问题.目录路径格式无空格等不相关字符,即必须是当前表访问用户可以访问:关于表中行数的限制问题,如果不加限制注意添加reject limit unlimited:表中数据格式与创建表时access parameters中的定义需保持同步,适当用skip=1) 外部表概述 外部表只能在Oracle 9i之后来使用.简单地说,外部表,是指不存在于数据库中的表.通过向Oracle提供描述外部表的元数据,我们可以把一个操作系统文件当成一个只读的数据库表,就像这些数据存储

PLSQL_Oracle外部表的概念和使用(案例)(通过外部表直接查询数据文件以节数据库表空间)

2014-08-25 BaoXinjian 一.摘要 ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文件. 因此,建立外部表时不会产生段.区.数据块等存储结构,只有与表相关的定义放在数据字典中. 外部表,顾名思义,存储在数据库外面的表. 当存取时才能从ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容进行修改(INSERT.UPDATE.DELETE操作). 不能对外部表建立索引.因为创建索引就意味着要存在对应的索引记录.而外部表其

Oracle 18C新特性:内联外部表

介绍 Oracle 数据库18c 允许您使用 SELECT 语句中定义的内联外部表访问平面文件中的数据. 什么是内联外部表? 内联外部表将外部表的定义直接放在SQL语句中,不需要额外在数据字典中创建外部表对象.当使用内联外部表的时候,与创建外部表(CREATE TABLE)相同的语法可以用在一个select语句上.可以在一个字句的 from 关键字后面指定内联外部表.含有内联外部表的查询也可以包含常规的表的关联(joins),聚合(aggregation)等等. 这比 Oracle 数据库12c

Greenplum/PostgreSQL中数据表数据去重的几种方法

GP主要用于数据仓库领域,在GP数据库中,如果由于ETL重复跑数导致数据重复的话,就需要进行去重复操作. 一种方法是把某一时间段的数据全部删掉,然后重新跑数据,这样其实工作量也比较大,需要补数据,重跑ETL. 另一种方法就是把重复的数据删掉就行,本文就是针对Greenplum分布式数据库如何进行去重复删除操作. 对于在PostgreSQL中,唯一确定一行的位置的是用ctid,可以用这个ctid作为一行的唯一标识:在Oracle中,数据表中的一行的唯一标识可以使用ROWID进行标识,这作为这一行的