我需要将数据从S3加载到Postgres RDS(大约50-100 GB)我没有选择使用AWS Data Pipeline我正在寻找类似于使用COPY命令加载数据的东西S3进入Amazon Redshift。
我很感激有关如何实现这一目标的任何建议。
答案 0 :(得分:1)
http://docs.aws.amazon.com/redshift/latest/dg/t_loading-tables-from-s3.html
使用COPY命令从数据文件中并行加载表 亚马逊S3。您可以使用Amazon指定要加载的文件 S3对象前缀或使用清单文件。
使用前缀指定要加载的文件的语法为 如下:
copy <table_name> from 's3://<bucket_name>/<object_prefix>' authorization;
<强>更新强>
另一种选择是安装s3并使用COPY
命令使用直接路径到csv。我不确定它是否能有效保持100GB,但值得尝试。关于软件的Here is some list选项。
另一种选择是将s3文件逐个“{3}”解析为文件,并从命名管道with something described here
解析COPY
最简单的选择就是将文件下载到本地存储并使用COPY
我根本不介绍
另外值得一提的是described here(状态不稳定)。 s3_fdw非常简洁,但我认为你可以创建一个导致s3文件的外表。这本身意味着您可以将数据加载到其他关系......
答案 1 :(得分:0)
复制命令适用于Redshift数据库表,不适用于RDS。
为了从S3加载RDS表,这是命令
从S3's3:// Bucket_name / Foldername'加载数据 INTO TABLE schemaname.table_name;
按照[链接]
https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.LoadFromS3.html
答案 2 :(得分:0)
最初,此答案试图将S3用于Postgres RDS功能。整个企业都失败了(见下文)。
我终于能够做到这一点的方法是:
这最后一部分确实非常重要。如果使用SQL COPY命令,则整个RDS Postgres角色结构将使您无休止。它有一个奇怪的SUPERRDSADMIN角色,这根本不是非常出色。但是,如果使用psql / copy commany,则显然可以执行任何操作。我已经确认是这种情况,并成功开始了我的上传。我将返回并重新编辑这篇文章(在时间允许的情况下)以添加上述内容的相关文档步骤。
Caveat Emptor::下面的帖子是我为实现此目的所做的所有原始工作。尽管进行了多方努力(包括只能称为AWS的可悲技术支持),但我不想掩盖领先优势。我不认为此功能已经准备就绪。尽管测试环境非常简单,易于复制,但AWS并未提供一种有效的方法来避免复制语句如下:
对
aws_s3.table_import_from_s3(...)
的实际调用报告了RDS和S3之间的权限问题。根据我对psql
的研究工作,这似乎是一个C库,可能是由AWS安装的。注意:CURL错误代码:尝试验证预签名URL时28,剩余1次尝试 注意:提示:确保您的实例能够与S3连接。
2019年4月24日,AWS发布了允许Postgres RDS直接从S3加载的功能。您可以阅读公告here,并查看文档页面here。
我正在与OP分享,因为这似乎是AWS支持的解决所提出问题的方式。
psql
并将其连接到RDS实例的能力aws_s3
的{{1}}扩展名。aws_commons
命令相同的所有数据格式这些说明相当详细,并提供了各种配置路径(AWS CLI脚本,控制台说明等)。此外,使用IAM密钥而不需要设置角色的选项很不错。
我没有找到仅下载COPY
的方法,因此我不得不将完整的postgres安装降低到我的Mac,但这与brew没什么大关系:
psql
由于未激活数据库服务,因此这是获取psql的最快方法。
更新:决定在我的Mac上安装psql是一个安全漏洞,端口转发等。我发现在AMI Extras rubric下有一个简单的Postgres安装可用于AMI Linux 2。 。在您的ami实例类型上,install命令非常简单。
brew install postgres
sudo amazon-linux-extras install postgresql10
非常易于使用,但是要记住,psql
本身对psql
的任何指令都被\
转义。可以在here上找到psql
上的文档。建议至少执行一次,然后再执行AWS推荐的脚本。
只要您具有严格的安全性并可以严格限制对RDS实例的访问权限(我这样做),请不要忘记打开从运行Postgres的AMI实例到RDS实例的端口。
如果您的偏好是GUI,则可以尝试使用PGAdmin4。根据文档,这是AWS建议的连接RDS Postgres实例的方法。我无法使用任何SSH隧道功能(这就是为什么我最终完成了用于psql
的localhost SSH映射的原因)。我还发现它在其他方面还很麻烦。阅读该产品的评论,似乎版本4可能不是最稳定的版本。