将数据从redshift传输到PostgreSQL

时间:2019-06-10 09:14:16

标签: postgresql amazon-web-services migration amazon-redshift data-transfer

我尝试搜索,但找不到

将数据从Redshift复制到Postgresql数据库的最佳方法是什么?

使用Talend作业/其他任何工具/代码等

无论如何我想将数据从Redshift传输到PostgreSQL数据库 另外,如果第三方数据库工具具有类似的功能,则可以使用它。

据我所知,我们可以使用AWS 数据迁移服务来做到这一点,但不确定我们的源数据库和目标数据库是否符合该条件

任何人都可以提出更好的建议吗?

2 个答案:

答案 0 :(得分:0)

我的方法是使用Postgres外部数据包装程序和dblink,

通过这种方式,可直接在Postgres中使用redshift表。

按照此处的说明进行设置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;

REFRESH MATERIALIZED VIEW CONCURRENTLY your_new_view;

答案 1 :(得分:0)

过去,我通过执行pg_dump并将数据作为SQL命令传递到第二个实例,从而设法将数据从一个PostgreSQL数据库传输到另一个数据库。

Amazon Redshift基于PostgreSQL,因此该方法也应适用。

您可以控制pg_dump是否应包含DDL来创建表,还是仅加载数据(--data-only)。

请参阅:PostgreSQL: Documentation: 8.0: pg_dump