我的公司决定使用[Greenplum]实施数据集市,我的任务是弄清楚如何继续下去。从现有[DB2] DB传输到Greenplum DB的数据量大概为2 TB。
我想知道: 1)Greenplum DB和vanilla [PostgresSQL]一样吗? (我曾在Postgres AS 8.3上工作过) 2)是否有任何(免费)工具可用于此任务(提取和导入) 3)我对Python有一些了解。是否可行,甚至容易在合理的时间内完成这项工作?
我不知道该怎么做。我们非常欢迎任何建议,提示和建议。
答案 0 :(得分:3)
1)Greenplum不是香草味,但它是相似的。它有一些新的语法,但总的来说,是高度一致的。
2)Greenplum本身提供了一个名为“gpfdist”的东西,它允许你监听你指定的端口以引入文件(但文件必须被拆分)。你想要可读的外部表。他们很快。语法如下所示:
CREATE READABLE EXTERNAL TABLE schema.ext_table
( thing int, thing2 int )
LOCATION (
'gpfdist://server:port1/path/to/filep1.txt',
'gpfdist://server:port2/path/to/filep2.txt',
'gpfdist://server:port3/path/to/filep3.txt'
) FORMAT 'text' (delimiter E'\t' null 'null' escape 'off') ENCODING 'UTF8';
CREATE TEMP TABLE import AS SELECT * FROM schema.ext_table DISTRIBUTED RANDOMLY;
如果你遵守他们的规则而你的数据是干净的,那么加载速度可能非常快。
3)你不需要python来做这件事,虽然你可以通过使用python启动gpfdist进程来自动化它,然后向创建外部表并加载数据的psql发送命令。取决于你想做什么。
答案 1 :(得分:0)
1)这不是香草postgres
2)我使用pentaho data integration在各种类型的数据传输项目中取得了很大成功。 如果您仔细设计步骤,它允许复杂的转换和多线程,多步骤数据加载。 另外我相信Pentaho特别支持Greenplum虽然我没有这方面的经验。
答案 2 :(得分:0)
许多Greenplum的实用程序都是用python编写的,当前的DBMS发行版安装了python 2.6.2,包括你可以用来在GPDB中工作的pygresql模块。
为了将数据传输到greenplum,我编写了使用cx_Oracle连接到源(Oracle)数据库的python脚本,然后将该输出转储到平面文件或命名管道。 gpfdist可以从任何一种源读取数据并将数据加载到系统中。
答案 3 :(得分:0)
通常,如果使用SQL插入或合并来导入大量数据,则速度非常慢。
建议的方法是使用您定义的外部表来使用基于文件,基于Web或gpfdist协议的托管文件。
此外,greenplum还有一个名为gpload的实用程序,可用于定义传输作业,如源,输出,模式(惰性,更新或合并)。