gpt4 book ai didi

postgresql - 如何将数据从 S3 加载到 PostgreSQL RDS

转载 作者:行者123 更新时间:2023-11-29 11:51:25 25 4
gpt4 key购买 nike

我需要将数据从 S3 加载到 Postgres RDS(大约 50-100 GB)我没有使用 AWS Data Pipeline 的选项,我正在寻找类似于使用 COPY 命令加载数据的东西S3 到 Amazon Redshift。

我将不胜感激关于如何完成此任务的任何建议。

最佳答案

最初,这个答案试图使用 S3 到 Postgres RDS 功能。整个企业都失败了(见下文)。

我终于能够做到这一点的方式是:

  1. 设置一个安装了 psql 的 EC2 实例(见下文接近尾声)
  2. 复制相关 CSV 以从 S3 导入到本地实例
  3. 使用psql/copy命令将文件导入上去

这最后一部分真的非常重要。如果您使用 SQL COPY 命令,整个 RDS Postgres 角色结构会让您感到沮丧。它有一个不稳定的 SUPERRDSADMIN 角色,它根本不是很 super 。但是,如果您使用 psql/copy 命令,您显然可以做任何事情。我已经确认是这种情况,并已成功开始上传。我会回来重新编辑这篇文章(如果时间允许),为上述内容添加相关的文档步骤。

Caveat Emptor: The post below was all the original work I had done trying to get this implemented. I don't want to bury the lead despite multiple efforts (including what can only be described as pathetic tech support from AWS) I don't believe that this feature is ready for prime time. Despite a very simple test environment, easy to replicate, AWS has not provided an effective way to not get the copy statement to crap out as follows:

The actual call to aws_s3.table_import_from_s3(...) is reporting a permission problem between RDS and S3. From my research work with psql this appears to be a C library, probably installed by AWS.

NOTICE: CURL error code: 28 when attempting to validate pre-signed URL, 1 attempt(s) remaining NOTICE: HINT: make sure your instance is able to connect with S3.

现在添加了 S3 到 Postgres RDS 的功能

2019 年 4 月 24 日,AWS 发布了允许 Postgres RDS 直接从 S3 加载的功能。您可以阅读公告here ,并查看文档页面 here .

我正在与 OP 分享,因为这似乎是 AWS 支持的解决所提出问题的方法。

要点总结:

  • 需要 Postgres 11.1 或更高版本
  • 需要访问 psql 并能够将其连接到 RDS 实例
  • 需要安装 aws_s3 扩展,它会引入 aws_commons
  • 您可以通过指定凭据或将 IAM 角色分配给 RDS 来访问 S3 存储桶
  • 它宣传支持所有与 postgres COPY 命令相同的数据格式
  • 它目前似乎一次只支持一个文件(即没有正则表达式)

说明相当详细,并提供了多种配置路径(AWS CLI 脚本、控制台说明等)。此外,使用 IAM key 而不必设置角色的选项也很不错。

我没有找到只下载 psql 的方法,所以我不得不将完整的 postgres 安装到我的 mac 上,但这对 brew 来说没什么大不了的:

brew install postgres

并且由于数据库服务没有被激活,这是获取 psql 的最快方式。

Update: Decided that having psql on my mac was a security hole, port forwarding, etc. I found that there is a simple Postgres install available for AMI Linux 2 under the AMI Extras rubric. The install command is fairly simple on your ami instance type.

sudo amazon-linux-extras install postgresql10

psql 相当容易使用,但是,重要的是要记住,psql 本身的任何指令都由 \ 转义。可以找到有关 psql 的文档 here .建议在执行 AWS 推荐的脚本之前至少检查一次。

如果您运行严格的安全措施并且可以访问您的 RDS 实例并受到严格限制(我就是这样做的),请不要忘记打开从运行 Postgres 的 AMI 实例到您的 RDS 实例的端口。

如果您喜欢 GUI,那么您可以尝试使用 PGAdmin4 .根据文档,这是 AWS 推荐的连接到 RDS Postgres 实例的方式。我无法使任何 SSH 隧道功能正常工作(这就是为什么我最终做了用于 psql 的本地主机 SSH 映射)。我还发现它在其他方面有很多问题。阅读产品评论似乎版本 4 可能不是最稳定的版本。

关于postgresql - 如何将数据从 S3 加载到 PostgreSQL RDS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47403391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com