将 Postgres RDS 模式复制到 Redshift
Posted
技术标签:
【中文标题】将 Postgres RDS 模式复制到 Redshift【英文标题】:Copy Postgres RDS schema to Redshift 【发布时间】:2016-06-06 22:50:07 【问题描述】:我是 RedShift 的新手。 以下是我的流程:
-
在 S3 中创建我的数据库 (Postgres RDS) 表的 CSV 副本。
使用连接到 redshift 的 sql 客户端的“create table”在 RedShift 中创建一些临时表(用于 ETL 目的)。
使用 Copy 命令将数据从 S3 移动到 RedShift。
问题:
我的暂存表(将在 ETL 处理后与其他暂存表一起删除)与 RDS 中的源表具有相同的架构。但是每次我构建一个新的临时表时,我都必须编写一个很长的“创建表”命令,当我拥有具有 100 个功能的表时,它会变得令人沮丧。有没有简单的方法来复制模式?或者我是否需要对我当前的流程进行一些更改以使其更容易?
【问题讨论】:
【参考方案1】:我们使用 Redshift 的“CREATE TABLE LIKE”命令。它看起来像:create table staging_table (like current_table);
。它有一个缺点,它没有继承current_table
的主键和外键属性,但我们可以接受它。
查看文档了解更多详情:http://docs.aws.amazon.com/redshift/latest/dg/performing-a-deep-copy.html
【讨论】:
感谢您的回复。所以我当前的表将是 S3 中的 CSV 表? 当前表将是一个红移表 创建一次红移表,然后使用create table like
所以我需要第一次使用create table?
谢谢!我会这样做的。【参考方案2】:
您可以在 ETL 之后截断 Staging 表,而不是删除 Staging 表,并且您可以设置与 ETL 内联的清理过程,以确保 Redshift 数据卫生表现不错。
【讨论】:
以上是关于将 Postgres RDS 模式复制到 Redshift的主要内容,如果未能解决你的问题,请参考以下文章
AWS postgres RDS 读取复制如何处理架构切换?
如何将数据从 Postgres 移动到在 Amazon 的 RDS 上运行的 MySQL?
将 Pyspark 数据帧加载到 postgres RDS 中的表中时出错
AWS RDS PostgreSQL:PostgreSQL 复制延迟的承诺价值是多少?
如何仅提取 AWS RDS(Postgres 数据库)中的更改数据(CDC)并将更改数据转储到另一个 RDS postgres 实例?