有没有办法直接从 C# 中的 Amazon S3 制表符分隔文件批量插入 Amazon Aurora RDS?

Is there a way to bulk insert into Amazon Aurora RDS directly from Amazon S3 tab delimited files in C#?

我目前正在使用 Amazon Redshift 存储来自 50 - 100 GB(即数百万行)制表符分隔文件的聚合数据,这些文件每天被推送到 Amazon S3 中的存储桶。

Redshift 通过提供 copy 命令使这变得简单,该命令可以直接定位到 S3 存储桶以批量加载数据。

我想将 Amazon Aurora RDS 用于同样的目的。目前,关于 Aurora 的文档充其量是很薄的。有没有办法直接从 S3 批量加载到 Aurora?

据我所知,MySql 的 LOAD DATA INFILE 需要磁盘上文件的路径,我想我可以通过将 tsv 下载到 AWS 实例和 运行 来自那里的命令,虽然这并不理想。

我还尝试将 tsv 读入内存并构建多个 insert 语句。这显然又慢又笨重。

想法?

2016 年 11 月更新:

从 Aurora 1.8 版开始,您现在可以使用以下命令批量加载 S3 数据:

LOAD DATA FROM S3

LOAD XML FROM S3

Aurora Load From S3


2018 年 7 月更新:

更新了 AWS 文档 link。感谢 Mark Holmes 抓住了那个。


您可以使用 AWS Data Pipeline。甚至还有一个用于将数据从 S3 加载到 RDS 的模板:

http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-template-copys3tords.html

仅供参考,截至 2018 年 7 月,上面的 "Aurora Load From S3" link 只是转到用户指南主页。 link 直接进入描述 IAM 角色和其他安全先决条件的主题,然后从 S3 加载成功:

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AuroraMySQL.Integrating.LoadFromS3.html

这个 post 出现在我搜索结果的顶部附近,所以我想用当前信息更新它。