将一张表从 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 中将数据从一个表复制到另一个表