PostgreSQL外部表

来源:互联网 发布:淘宝放心淘 编辑:程序博客网 时间:2024/06/05 10:09

PostgreSQL外部表使用说明


作者:张茂森

版本:1.2

日期:2009-12-22

1     步骤:

1、 安装外部表组件

2、 创建外部表

3、 使用外部表

4、 卸载外部表组件

2     安装外部表组件

1、 编译及安装动态库

下载源代码externaltablecvs路径:

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

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

>make

>make install

完成编译安装动态库过程

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

>make “HDFS=true”

>make install

2、在指定数据库中安装

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

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

 

3     创建外部表

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

 

createexttab  --help 可以看帮助文档

典型的用法:

createexttab  -n hostname –p port –ddbname –f filename

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

 

3.1     配置文件模板

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

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

[table name]

;外部表名

TABLE_NAME =exttab1

 

[file name ]

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

FILE_NAME  = /home/exttab/b.txt

 

[fielddescribtion]

;字段描述

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

 

[fielddelimiter]

;字段分隔符

FIELD_DELIMITER = ,

 

[recorddelimiter]

;记录分隔符

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为允许的最大记录长度,如果不指定会默认为10485761M字节数,推荐指定1048576

 

 

 

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

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

外部表名:exttab1

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

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

 

4     使用外部表:

如上述例子:

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

select * from exttab1;进行查询

 

5     删除外部表:

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

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

 

典型应用是:

dropexttab -n hostname –p port –d dbname  -ttablename

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

 

6     卸载外部表:

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

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

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

执行makeuninstall完成卸载过程

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 唐山驾驶本到期换本怎么办 北京居住证变更地址了怎么办 眼睛弱视驾驶证换证不了怎么办? 驾照的分扣完了怎么办 驾照被扣了3分怎么办 交警扣了行驶证怎么办 报考驾照时手机号录错怎么办 摩托车被交警队拖走怎么办 汽车牌照被偷了怎么办 代理品牌个体工商营业证怎么办 2地交社保怎么办退休 驾驶证脱审3月怎么办 a1一次性扣12分怎么办 驾照在外地掉了怎么办 在外市考的驾照怎么办 驾照过期3个月怎么办 驾照过期6个月怎么办 b本扣分了6分怎么办 b2驾照提前换证有扣分怎么办 酒驾驾驶证被扣怎么办 驾驶证被扣了分怎么办 c1驾照扣了12分怎么办 结婚证丢了怎么办离婚手续 结婚证不见了怎么办离婚手续 科目一身份丢了怎么办 考驾照身份证过期了怎么办 酒驾发交通事故致人死亡怎么办 车保险快到期了怎么办 车保险贴掉了怎么办 小车撞凹进去了怎么办 被代位追偿了怎么办 车被别人抵押了怎么办 朋友没驾照借车怎么办 车子被朋友撞了怎么办 电车被交警扣了怎么办 e照扣了12分怎么办 驾驶证被扣33分怎么办 a2驾驶员扣33分怎么办 驾驶证被扣48分怎么办 驾照扣了33分怎么办 车辆被扣36分怎么办