使用sqluldr2和ETL Server实现Oracle到Greenplum的数据迁移

目录

1.安装sqluldr2

1.1 sqluldr2简介

1.2sqluldr2安装

2.将Oracle中的表导出成.CSV文件

2.1编写导出的执行语句

2.2执行上述的语句

3.在Greenplum中创建上述表,并将.CSV文件导入

3.1创建CUSTOMER

3.2导入数据

3.3脚本合并(可选)

4.使用外部表

4.1开启gpfdist服务

4.2创建加载数据的目标表

4.3创建外部表

4.4将数据导入目标表


1.安装sqluldr2

1.1 sqluldr2简介

sqluldr2是一款Oracle数据快速导出工具,包含32、64位程序,sqluldr2在大数据量导出方面速度超快,能导出亿级数据为excel文件,功能是将数据以TXT/CSV等格式导出。

具体使用参数如下图所示:

1.2sqluldr2安装

将下载的sqluldr2.exe文件放在Oracle的安装目录下(BIN目录),进入命令提示符,执行sqluldr2命令即可。

2.将Oracle中的表导出成.CSV文件

以CUSTOMER表为例,下面步骤会详细描述如何将该表导出成.CSV格式。

2.1编写导出的执行语句

sqluldr2 system/123Qwe@myoracle  query="select * from CUSTOMER " field=0x2c file="e:\TESTDATA.csv" text=CSV

其中system/123Qwe@myoracle为连接数据库的参数,query为查询的语句,field为字段分隔符(0x2c表示“,”),file为导出的.csv文件。

2.2执行上述的语句

在命令行提示符内执行上述命令

3.在Greenplum中创建上述表,并将.CSV文件导入

3.1创建CUSTOMER

(1)建表语句:

DROP TABLE IF EXISTS CUSTOMER;

CREATE TABLE CUSTOMER

(

C_CUSTKEY        SERIAL8,

C_NAME           VARCHAR(25),

C_ADDRESS        VARCHAR(40),

C_NATIONKEY      BIGINT NOT NULL,

C_PHONE          CHAR(15),

C_ACCTBAL       DECIMAL,

C_MKTSEGMENT    CHAR(10),

C_COMMENT       VARCHAR(117)

) DISTRIBUTED BY(C_CUSTKEY);

(2)执行脚本

\i /opt/modules/ CUSTOMER.sql

3.2导入数据

\COPY CUSTOMER FROM '/opt/modules/TESTDATA.csv' CSV HEADER LOG ERRORS SEGMENT REJECT LIMIT 50 ROWS;

3.3脚本合并(可选)

(1)建表导入数据脚本

DROP TABLE IF EXISTS CUSTOMER;

CREATE TABLE CUSTOMER

( C_CUSTKEY        SERIAL8,

C_NAME           VARCHAR(25),

C_ADDRESS        VARCHAR(40),

C_NATIONKEY      BIGINT NOT NULL,

C_PHONE          CHAR(15),

C_ACCTBAL       DECIMAL,

C_MKTSEGMENT    CHAR(10),

C_COMMENT       VARCHAR(117)

) DISTRIBUTED BY(C_CUSTKEY);

COPY CUSTOMER FROM '/opt/modules/CUSTOMER.csv' WITH csv HEADER DELIMITER ',';

(2)执行脚本

\i /opt/modules/CUSTOMER_other.sql

4.使用外部表

对于大表而言,可以使用此方式,效率较高。

4.1开启gpfdist服务

$ gpfdist -d /opt/modules -p 8081 -l /home/gpadmin/log &

4.2创建加载数据的目标表

DROP  TABLE IF EXISTS CUSTOMER;

CREATE TABLE CUSTOMER

(

C_CUSTKEY        SERIAL8,

C_NAME           VARCHAR(25),

C_ADDRESS        VARCHAR(40),

C_NATIONKEY      BIGINT NOT NULL,

C_PHONE          CHAR(15),

C_ACCTBAL       DECIMAL,

C_MKTSEGMENT    CHAR(10),

C_COMMENT       VARCHAR(117)

) DISTRIBUTED BY(C_CUSTKEY);

4.3创建外部表

DROP EXTERNAL TABLE IF EXISTS CUSTOMER_ext;

CREATE READABLE EXTERNAL TABLE CUSTOMER_ext

( C_CUSTKEY        SERIAL8,

C_NAME           VARCHAR(25),

C_ADDRESS        VARCHAR(40),

C_NATIONKEY      BIGINT NOT NULL,

C_PHONE          CHAR(15),

C_ACCTBAL       DECIMAL,

C_MKTSEGMENT    CHAR(10),

C_COMMENT       VARCHAR(117)

)LOCATION ('gpfdist://mdw:8081/ CUSTOMER.csv')

FORMAT 'csv' (header)

LOG ERRORS SEGMENT REJECT LIMIT 50 rows;

4.4将数据导入目标表

INSERT INTO CUSTOMER SELECT * FROM CUSTOMER _ext;

 

猜你喜欢

转载自blog.csdn.net/jmx_bigdata/article/details/84565228