Перенести данные из красного смещения в postgresql

Я попытался найти его, но не смог найти

Как лучше всего скопировать данные из Redshift в базу данных Postgresql?

с помощью задания Talend / любого другого инструмента / кода и т. д.

в любом случае я хочу также перенести данные из Redshift в базу данных PostgreSQL, вы можете использовать любой сторонний инструмент для работы с базами данных, если он имеет аналогичные функции.

Кроме того, насколько мне известно, мы можем сделать это с помощью AWS Data Migration Service, но не уверены, что исходная база данных и база данных назначения соответствуют этим критериям или нет.

Кто-нибудь может предложить что-нибудь получше?


person LKk    schedule 10.06.2019    source источник
comment
Обратите внимание, что мы не создаем для вас решения и не проводим исследования от вашего имени. Обновите свой вопрос, указав то, что вы действительно пробовали, а также конкретные проблемы или ошибки, которые у вас возникают.   -  person I.T Delinquent    schedule 10.06.2019
comment
@ I.TDelinquent я изменил это   -  person LKk    schedule 10.06.2019
comment
AWS DMS не включает Redshift в качестве источника.   -  person Jon Scott    schedule 10.06.2019


Ответы (2)


Я делаю это с помощью Postgres Foreign Data Wrapper и dblink,

Таким образом, таблица красных смещений доступна непосредственно в Postgres.

Следуйте инструкциям здесь, чтобы настроить его https://aws.amazon.com/blogs/big-data/join-amazon-redshift-and-amazon-rds-postgresql-with-dblink/

Важная часть этой ссылки - это код:

CREATE EXTENSION postgres_fdw;
CREATE EXTENSION dblink;
CREATE SERVER foreign_server
        FOREIGN DATA WRAPPER postgres_fdw
        OPTIONS (host '<amazon_redshift _ip>', port '<port>', dbname '<database_name>', sslmode 'require');
CREATE USER MAPPING FOR <rds_postgresql_username>
        SERVER foreign_server
        OPTIONS (user '<amazon_redshift_username>', password '<password>');

Для моего случая использования я затем настроил материализованное представление postgres с индексами, основанными на этом.

create materialized view if not exists your_new_view as
SELECT some,
       columns,
       etc
   FROM dblink('foreign_server'::text, '
<the redshift sql>
'::text) t1(some bigint, columns bigint, etc character varying(50));

create unique index if not exists index1
    on your_new_view (some);

create index if not exists index2
    on your_new_view (columns);

Потом регулярно запускаю (на postgres)

REFRESH MATERIALIZED VIEW your_new_view;

or

REFRESH MATERIALIZED VIEW CONCURRENTLY your_new_view;
person Jon Scott    schedule 10.06.2019
comment
но я должен сделать это для всех схем и таблиц - person LKk; 10.06.2019
comment
Правильно, для каждого, что хотите. в зависимости от вашего варианта использования вы можете предпочесть другое решение, если сможете его найти. Не знаю (не работает DMS). Возможно, подумайте, ПОЧЕМУ вы передаете данные, и добавьте эту информацию в свой вопрос. - person Jon Scott; 10.06.2019

Раньше мне удавалось переносить данные из одной базы данных PostgreSQL в другую, выполняя pg_dump и передавая вывод в виде команды SQL второму экземпляру.

Amazon Redshift основан на PostgreSQL, поэтому этот метод тоже должен работать.

Вы можете указать, должен ли pg_dump включать DDL для создания таблиц или он должен просто загружать данные (--data-only).

См .: PostgreSQL: Документация: 8.0: pg_dump

person John Rotenstein    schedule 10.06.2019