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 完成卸载过程 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |