使用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;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章