PostgreSQL外部表

前端之家收集整理的这篇文章主要介绍了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 完成卸载过程

猜你在找的Postgre SQL相关文章