将 s3 的 pg_dump 加载到 redshift

Posted

技术标签:

【中文标题】将 s3 的 pg_dump 加载到 redshift【英文标题】:loading a pg_dump off of s3 into redshift 【发布时间】:2017-11-30 01:03:40 【问题描述】:

我正在尝试将完整的数据库转储加载到 Redshift。是否有一个命令可以将 s3 上的 pg_dump 中的数据恢复到 Redshift 中?如果没有,解决此问题的最佳步骤是什么?

谢谢

【问题讨论】:

【参考方案1】:

如果您有一个非压缩 pg_dump,这应该可以使用 psql 命令来实现(您可能需要手动编辑以获得正确的语法,具体取决于您的版本和选项集)。 但是,这是一种非常低效且缓慢的加载 redshift 的方法,我不推荐它。如果您的表很大,则可能需要几天或几周的时间!

你需要做的是:

    根据源表在redshift上创建目标表,但是 考虑排序键和分布。 使用 postgres 将您的 postgres 源表卸载到 csv 文件中 “复制”命令 如果源 csv 文件非常大(例如超过 100MB), 考虑将它们拆分为单独的文件,因为它们将加载 更快(redshift 将并行化) gzip csv 文件(推荐但不是必需的) 将这些 csv 文件上传到 s3,每个表都有一个单独的文件夹 使用 redshift 副本将数据从 s3 加载到 redshift 命令

【讨论】:

以上是关于将 s3 的 pg_dump 加载到 redshift的主要内容,如果未能解决你的问题,请参考以下文章

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

EC2 和 RDS 之间的备份 gem pg_dump 版本不匹配

PostgreSQL pg_dump/复制

我可以使用 AWS Glue 将 S3 上的 json 数据转换为列格式并将其推送到 Redshift 吗?

从 s3 将外部 jars 加载到 Zeppelin

使用复制命令将数据从 s3 加载到 redshift