postgresql - 将一张表从 RDS / postgres 加载到 Redshift
问题描述
我们有一个 Redshift 集群,它需要来自我们的 RDS / postgres 数据库之一的一张表。我不太确定导出数据并将其引入的最佳方法,确切的步骤应该是什么。
在拼凑各种博客和文章时,共识似乎是pg_dump
用来将表复制到 csv 文件,然后将其复制到 S3 存储桶,然后使用 RedshiftCOPY
命令将其引入新表——这是我的最高境界水平的理解,但我不确定命令行开关应该是什么,或者实际的细节。目前是否有人这样做,如果是这样,我是否有超越“推荐”的方式来一次性导入 Redshift?
解决方案
您似乎想要:
- 从 Amazon RDS PostgreSQL 导出
- 导入 Amazon Redshift
从将数据从 RDS for PostgreSQL 数据库实例导出到 Amazon S3 - Amazon Relational Database Service:
您可以从 RDS for PostgreSQL 数据库实例中查询数据并将其直接导出到存储在 Amazon S3 存储桶中的文件中。为此,您使用
aws_s3
Amazon RDS 提供的 PostgreSQL 扩展。
这会将 CSV 文件保存到 Amazon S3 中。
然后,您可以使用 Amazon RedshiftCOPY
命令将此 CSV 文件加载到现有的 Redshift 表中。
您将需要某种方式来编排这些操作,这将涉及对 RDS 数据库运行命令,等待它完成,然后在 Redshift 数据库中运行命令。这可以通过一个 Python 脚本来完成,该脚本psycopg2
依次连接到每个数据库(例如 via )并运行命令。
推荐阅读
- c++ - 声明与 const 变量和成员函数相同的标识符
- scala - 了解闭包或将 udf 注册代码从 main 中取出并放入 utils 的最佳方法
- javascript - 使用ajax请求时如何删除cors错误?
- java - java - 如何在java hibernate中的单引号之间将参数设置为本机查询?
- ethereum - Solidity 和 Cryptozombies 中的继承:如何部署完整的 OOP 树?
- angular - 在 Angular 2+ 中压缩传出请求
- ios - 如何从 Crashlytics 解释 iOS 崩溃日志?
- c# - 运行时加载 Prism 动态模块
- javascript - 如何从下拉选择中禁用一个选项?
- node.js - 请在 Angular 6 中添加 @Pipe/@Directive/@Component 注释