将一张表从 RDS / postgres 加载到 Redshift

Posted

技术标签:

【中文标题】将一张表从 RDS / postgres 加载到 Redshift【英文标题】:loading one table from RDS / postgres into Redshift 【发布时间】:2020-10-30 23:07:46 【问题描述】:

我们有一个 Redshift 集群,它需要来自我们的 RDS / postgres 数据库之一的一张表。我不太确定导出数据并将其引入的最佳方式,具体步骤应该是什么。

在拼凑各种博客和文章时,共识似乎是使用 pg_dump 将表复制到 csv 文件,然后将其复制到 S3 存储桶,然后使用 Redshift COPY 命令将其引入到一个新表 - 这是我的高级理解,但我不确定命令行开关应该是什么,或者实际细节。目前有没有人这样做,如果有,我是否有超越“推荐”的方式来一次性导入 Redshift?

【问题讨论】:

【参考方案1】:

您似乎想要:

从 Amazon RDS PostgreSQL 导出 导入 Amazon Redshift

来自Exporting data from an RDS for PostgreSQL DB instance to Amazon S3 - Amazon Relational Database Service:

您可以从 RDS for PostgreSQL 数据库实例中查询数据,并将其直接导出到存储在 Amazon S3 存储桶中的文件中。为此,您可以使用 Amazon RDS 提供的 aws_s3 PostgreSQL 扩展。

这会将 CSV 文件保存到 Amazon S3。

然后,您可以使用 Amazon Redshift COPY 命令将此 CSV 文件加载到现有的 Redshift 表中。

您将需要某种方式来编排这些操作,这将涉及对 RDS 数据库运行命令,等待它完成,然后在 Redshift 数据库中运行命令。这可以通过一个 Python 脚本来完成,该脚本依次连接到每个数据库(例如通过psycopg2)并运行命令。

【讨论】:

以上是关于将一张表从 RDS / postgres 加载到 Redshift的主要内容,如果未能解决你的问题,请参考以下文章

oracle 中如何将一张500万数据的表从一个库快速转移到另外一个库

将表从 Postgres RDS 迁移到另一个 RDS

如何使用复制命令在 postgres 中将数据从一个表复制到另一个表

使用 Sqoop 将表从 AWS RDS 移动到 AWS EMR 的问题

将一张表数据定时插入到另一张表

如何将一张表复制到另一张表