将数据从 redshift 传输到 postgresql



我尝试搜索它但找不到

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

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

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

另外,据

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

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

我这样做的方法是使用 Postgres 外部数据包装器和 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);

然后我定期运行(在帖子上(

REFRESH MATERIALIZED VIEW your_new_view;

REFRESH MATERIALIZED VIEW CONCURRENTLY your_new_view;

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

Amazon Redshift 基于 PostgreSQL,因此此方法也应该有效。

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

参见:PostgreSQL:文档:8.0:pg_dump

最新更新