Перенос данных из базы данных DB2 в базу данных greenplum - PullRequest
0 голосов
/ 24 мая 2011

Моя компания решила внедрить datamart с помощью [Greenplum], и у меня есть задача выяснить, как это сделать. Ориентировочный показатель объема данных, передаваемых из существующей [DB2] БД ​​в Greenplum DB, составляет около 2 ТБ.

Я хотел бы знать: 1) БД Greenplum - это то же самое, что и vanilla [PostgresSQL]? (Я работал на Postgres AS 8.3) 2) Существуют ли (бесплатные) инструменты для этой задачи (извлечение и импорт) 3) У меня есть некоторые знания Python. Возможно ли, даже легко сделать это в разумные сроки?

Понятия не имею, как это сделать. Будем очень рады любым советам, советам и предложениям.

Ответы [ 4 ]

3 голосов
/ 24 мая 2011

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, которая создает внешнюю таблицу и загружает данные. Зависит от того, что вы хотите сделать, хотя.

0 голосов
/ 15 мая 2014

Как правило, это очень медленно, если вы используете SQL вставку или объединение для импорта больших массивов данных.

Рекомендуемый способ - использовать внешние таблицы, которые вы определили для использования на основе файлов, на основе веб-интерфейса или gpfdist.файлы, размещенные на протоколе.

А также в greenplum есть утилита gpload, которая может использоваться для определения ваших заданий на передачу, таких как источник, вывод, режим (инертный, обновление или объединение).

0 голосов
/ 26 сентября 2011

Многие утилиты Greenplum написаны на python, и текущий дистрибутив СУБД поставляется с установленным python 2.6.2, включая модуль pygresql, который вы можете использовать для работы внутри GPDB.

Для передачи данных в greenplum,Я написал сценарии Python, которые подключаются к исходной (Oracle) БД с помощью cx_Oracle, а затем выводят эти выходные данные в виде плоских файлов или именованных каналов.gpfdist может читать из любого источника и загружать данные в систему.

0 голосов
/ 24 мая 2011

1) Это не ванильный postgres

2) Я использовал интеграцию данных Pentaho с хорошим успехом в различных типах проектов передачи данных.Это позволяет выполнять сложные преобразования и многопотоковую многоступенчатую загрузку данных, если вы тщательно продумываете свои шаги.Также я считаю, что Pentaho особенно поддерживает Greenplum, хотя у меня нет такого опыта.

...