将 s3 的 pg_dump 加载到 redshift
loading a pg_dump off of s3 into redshift
我正在尝试将完整的数据库转储加载到 Redshift 中。是否有一个命令可以将数据从生活在 s3 上的 pg_dump 恢复到 Redshift?如果不是,解决这个问题的最佳步骤是什么?
谢谢
如果你有非压缩 pg_dump 这应该可以使用 psql 命令(你可能需要手动编辑以获得正确的语法,这取决于你的版本和选项集)。
然而,这是一种非常低效且缓慢的加载 redshift 的方式,我不推荐它。如果您的 table 很大,可能需要几天或几周的时间!
你需要做的是:
- 根据源 table 在 redshift 上创建目标 table,但是
考虑排序键和分布。
- 使用 postgres 将您的 postgres 源 tables 卸载到 csv 文件中
"copy" 命令
- 如果源 csv 文件非常大(例如超过 100MB),
考虑将它们拆分成单独的文件,因为它们将加载
更快(红移将并行化)
- gzip csv 文件(推荐但不是必需的)
- 将这些 csv 文件上传到 s3,每个 table
有一个单独的文件夹
- 使用 redshift 副本将数据从 s3 加载到 redshift
命令
我正在尝试将完整的数据库转储加载到 Redshift 中。是否有一个命令可以将数据从生活在 s3 上的 pg_dump 恢复到 Redshift?如果不是,解决这个问题的最佳步骤是什么?
谢谢
如果你有非压缩 pg_dump 这应该可以使用 psql 命令(你可能需要手动编辑以获得正确的语法,这取决于你的版本和选项集)。 然而,这是一种非常低效且缓慢的加载 redshift 的方式,我不推荐它。如果您的 table 很大,可能需要几天或几周的时间!
你需要做的是:
- 根据源 table 在 redshift 上创建目标 table,但是 考虑排序键和分布。
- 使用 postgres 将您的 postgres 源 tables 卸载到 csv 文件中 "copy" 命令
- 如果源 csv 文件非常大(例如超过 100MB), 考虑将它们拆分成单独的文件,因为它们将加载 更快(红移将并行化)
- gzip csv 文件(推荐但不是必需的)
- 将这些 csv 文件上传到 s3,每个 table 有一个单独的文件夹
- 使用 redshift 副本将数据从 s3 加载到 redshift 命令