将 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 版本不匹配