目錄
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; |