0

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

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

我不知道该怎么做。任何建议、提示和建议都将受到欢迎。

4

4 回答 4

3

1) Greenplum 不是普通的 postgres,但它是相似的。它有一些新的语法,但总的来说是高度一致的。

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 发送一个创建外部表并加载数据的命令。取决于你想做什么。

于 2011-05-24T18:26:13.850 回答
0

1) 这不是普通的 postgres

2)我在各种类型的数据传输项目中使用过pentaho数据集成并取得了很好的成功。如果您仔细设计步骤,它允许复杂的转换和多线程、多步骤的数据加载。我也相信 Pentaho 特别支持 Greenplum,尽管我没有这方面的经验。

于 2011-05-24T14:32:52.973 回答
0

一般来说,如果你使用 SQL 插入或合并来导入大批量数据,它真的很慢。

推荐的方法是使用您定义的外部表来使用基于文件、基于 Web 或 gpfdist 协议托管的文件。

此外,greenplum 有一个名为 gpload 的实用程序,可用于定义传输作业,如源、输出、模式(惰性、更新或合并)。

于 2014-05-15T03:53:29.000 回答
0

许多 Greenplum 的实用程序都是用 python 编写的,当前的 DBMS 发行版附带安装了 python 2.6.2,包括可用于在 GPDB 中工作的 pygresql 模块。

为了将数据传输到 greenplum,我编写了 python 脚本,使用 cx_Oracle 连接到源 (Oracle) DB,然后将该输出转储到平面文件或命名管道。gpfdist 可以从任何一种源中读取数据并将数据加载到系统中。

于 2011-09-26T03:53:37.883 回答