静态表oracle迁移greenplum方案

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、  相关问题

效率情况说明

特殊字符处理

猜你喜欢

转载自blog.csdn.net/wang1016612067/article/details/78766237