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