1、 流程
Sqluldr2:这个是楼方鑫大神开发的一个基于oracle oci的导出工具。需要单独下载。是一个直接可用的可执行文件。这个工具依赖一些oracle的动态链接库,需要在装有oracle环境(装client也行)执行。
https://yq.aliyun.com/articles/210400?utm_content=m_30850
平面文件:就是用文本工具直接可读的文件。比如win下常见的txt格式、csv格式文件。
Gpfdist:这个是greenplum自带的并行文件分发程序,用于支持gp外部表和加载数据(通过gpload)。因为依赖gp自带的一些链接库,需要在装有gp环境执行。这个服务需要单独启动。
http://gpdb.docs.pivotal.io/4330/utility_guide/admin_utilities/gpfdist.html
Gpload:这个是gp自带的加载外部数据入gp的工具,跟oracle的sql*loader功能差不多。这个是封装gpfdist实现的,因此依赖gpfdist服务环境、python2.6.2以上版本。具体可查看以下官方文档。
http://www.cnblogs.com/daojiao/p/4595597.html
http://gpdb.docs.pivotal.io/4330/utility_guide/admin_utilities/gpload.html#topic1
2、 操作步骤
1、 oracle数据库上传Sqluldr2可执行程序。
2、 使用Sqluldr2导出oracle数据(直接执行该命令查看帮助)。
./sqluldr2linux64.bin user=wjf/1@dreamer query="select * from wjf.wjf_001" file=/tmp/123.txt text=text field=0x2c record=0x0a quote='"' charset=utf8 |
导出后的文本格式如下:
User:指定用户密码和连接库。
Query:指定导出数据
File:指定导出文件名。
Text:指定输出文件格式。Csv第一行为列名展示,text没有,若是csv,导入前把第一样删去。
Field:指定列与列的分隔符。
Record:指定行与行的分隔符。
Quote:指定列的边界。csv默认就是双引号,text默认为空。
Charset:指定目标端的字符集。
ID,VC,TM(text=CSV下才有) "2","fjie\n\tsfjie","2017-10-19 10:21:09" "2","fjie\n\tsfjie","2017-10-19 10:21:09" "c","fjie\n\tsfjie","2017-10-19 10:21:09" |
3、 复制导出文件到greenplum服务器。
4、 配置启动gpfdist服务(gpfdist –help查看帮助)。
gpfdist -d /home/gpadmin/wjf_test/ -p 8085 -l /home/gpadmin/wjf_test/gpfdist.log & |
-d:指定平面文件存放路径。
-p:指定gpfdist使用的端口号。
-l:指定存放的日志文件。
启动成功后,可通过ps –ef |grep gpfdist,netstat –anp|grep gpfdist查看进程和监听。
5、 Greenplum库新建导入表结构。
6、 配置gpload控制文件,导入数据(直接执行该命令可查看帮助)。
新建一个控制文件my_q.yml(格式可通过帮助获得)。
--- VERSION: 1.0.0.1 DATABASE: wjf USER: gpadmin HOST: csdb PORT: 5432 GPLOAD: INPUT: - SOURCE: LOCAL_HOSTNAME: - csdb PORT: 8085 FILE: - /home/gpadmin/wjf_test/123.txt - COLUMNS: - vc: character varying - id: character varying - tm: timestamp - FORMAT: csv - ERROR_LIMIT: 25000 - LOG_ERRORS: TrueD - QUOTE: '”' OUTPUT: - TABLE: wjf.wjf_001 - MODE: INSERTS |
控制文件要注意COLUMNS字段顺序,该字段名与greenplum库表名一致。
该文件为python解析格式,严格区分行前空格。
执行导入命令。
gpload -f my_1.yml -l gpload.log |
-f:指定控制文件。
-l:指定认知文件。
3、 相关问题
效率情况说明
特殊字符处理