PostgreSQL外部表

PostgreSQL 外部表使用说明


作者:张茂森

版本: 1.2

日期: 2009-12-22

1      步骤:

1、 安装外部表组件

2、 创建外部表

3、 使用外部表

4、 卸载外部表组件

2      安装外部表组件

1、 编译及安装动态库

下载源代码 externaltable cvs 路径:

http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/pgexternaltable/src/externaltable/

将源代码拷贝到 PostgreSQL 的安装源码包中,路径 contrib/ 下,进入 externaltable 执行

>make

>make install

完成编译安装动态库过程

如果需要外部表支持 HDFS Hadoop Distributed File System ),执行命令如下:

>make “HDFS=true”

>make install

2 、在指定数据库中安装

使用 psql 连接到数据库后,使用 /i 命令执行 contrib/ externaltable 下 的 externaltab.sql 将会在用户所连接的数据库下完成安装过程

注:安装时,对于同一个数据库服务器,编译 过程只需要一次,但第二个步骤对服务器中不同的数据库都是必须的

 

3      创建外部表

安装完外部表组件后,用两个可执行文件 createexttab  dropexttab

 

createexttab  --help 可以看帮助文档

典型的用法:

createexttab  -n hostname –p port –d dbname –f filename

了解此命令前,先说明一下配置文件

 

3.1      配置文件模板

上述命令中, filename 即为带全路径的配置文件名, 其模板为:

ext.cfg: 该文件描述了外部表的信息

[table name]

; 外部表名

TABLE_NAME = exttab1

 

[file name ]

; 可以设定多个文件为外部表,以逗号隔开

FILE_NAME   = /home/exttab/b.txt

 

[field describtion]

; 字段描述

FIELD_INFO  = name text , sex text , age  text, weight text, job text, detail text

 

[field delimiter]

; 字段分隔符

FIELD_DELIMITER  = ,

 

[record delimiter]

; 记录分隔符

RECORD_DELIMITER  = newline

 

[log file name]

; 日志文件名

LOG_FILE_NAME = /home/exttab/logtest/exttab1.log

 

[bad file name]

; 坏记录文件名

BAD_FILE_NAME = /home/exttab/logtest/exttab1.bad

 

[max record len]

; 允许的最大记录长度,建议配成 1048576(1M)

MAX_RECORD_LEN = 1048576

 

3.2      配置文件说明:

l   [] 中的内容为固定的内容

l  TABLE_NAME 为用户对外部文件起的对应的表名

l  FILE_NAME 为带全路径的外部文件名

l  FIELD_INFO 为外部表各个字段的描述

l  FIELD_DELIMITER 为字段分隔符

1 、支持任意单个字符为字段分隔符,对于不可打印字符,比方说 ^A /n 等等,应该写成 0x0A 0x0D

2 、不支持字符串

l  RECORD_DELIMITER 为记录分隔符

1 、支持任意单个字符作为记录分隔符,对于不可打印字符,比方说 ^A /n 等等,应该写成 0x0A 0x0D

2 、不支持两个或两个以上的字符串作为记录分隔符

3 、支持特定字符串 newline NEWLINE ,视为 '/n' 处理

l  LOG_FILE_NAME 为带全路径的日志文件文件名,用于记录查询过程中的日志记录,如果不需要日志记录,可以不指定

l  BAD_FILE_NAME 为带全路径的 BAD 文件名,用于记录查询过程中的外部文件的坏数据以及其所在文件名和行号,如果不需要可以不指定,因 为记录 bad 文件 会较大的影响查询速度,因此建议对于大数据量的操作不指定该文件名

l  MAX_RECORD_LEN 为允许的最大记录长度,如果不指定会默认为 1048576 1M 字节数,推荐指定 1048576

 

 

 

那么,执行此命令的意思是:

在数据库 dbname 上创建以 filename 描述的外部表,其描述为:

外部表名: exttab1

外部文件名: /home/exttab/b.txt

以及其他各个外部表需要的信息,如果提示创 建成功,那么,用户就可以对外部表 exttab1 进行查询操作了,(注:目前不能对外部表进行 update insert truncate 操作)

 

4      使用外部表:

如上述例子:

用户使用 psql 连接到数据库 dbname 上,可以直接输入查询语句:

select * from exttab1; 进行查询

 

5      删除外部表:

当用户不在需要使用外部表 exttab1 时,可以使用命令 dropexttab 进行删除外部表操作

可以使用 dropexttab –help 查看帮助信息

 

典型应用是:

dropexttab -n hostname –p port –d dbname  -t tablename

即删除数据库 dbname 下的外部表 tablename

 

6      卸载外部表:

1 、删除指定数据库中的外部表,

使用 psql 连接到数据库后,执行 contrib/ externaltable 下的 uninstall_externaltab.sql 将会在用户所连接的数据库下的外部表组件删除

2 、彻底删除数据库服务器中的外部表

执行 make uninstall 完成卸载过程

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值