将数据从DB2 DB传输到greenplum DB

时间:2011-05-24 12:28:25

标签: python postgresql db2 datamart greenplum

我的公司决定使用[Greenplum]实施数据集市,我的任务是弄清楚如何继续下去。从现有[DB2] DB传输到Greenplum DB的数据量大概为2 TB。

我想知道: 1)Greenplum DB和vanilla [PostgresSQL]一样吗? (我曾在Postgres AS 8.3上工作过) 2)是否有任何(免费)工具可用于此任务(提取和导入) 3)我对Python有一些了解。是否可行,甚至容易在合理的时间内完成这项工作?

我不知道该怎么做。我们非常欢迎任何建议,提示和建议。

4 个答案:

答案 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的实用程序,可用于定义传输作业,如源,输出,模式(惰性,更新或合并)。