批量加载AWS S3到Postgres流式传输STDIN

时间:2018-05-30 14:49:10

标签: postgresql amazon-web-services amazon-s3 amazon-rds

目标是将s3存储桶中的csv加载到RDS中的postgres中的表中。寻找"最佳实践"我发现AWS建议使用他们的数据管道"产品。他们为rds mysql提供了批量加载csv的入门模板。该模板如下面的截图。我的反应是哇 - 所有这些方框和箭头只是为了将csv加载到桌子上?"

data pipeline

所以我的问题是"我们能找到更简单的方法来实现同一目标吗?"。假设我的存储桶,我的数据库和一个免费的T2.micro EC2实例位于同一区域。假设AWS CLI和postgres客户端安装在EC2上。

我可以运行以下命令将CSV中的CSV读取到stdout并将流管道传递给postgres bulk load命令: aws s3 cp s3://mybucket/dummy.csv - | psql -d mydb -p 5432 -c "copy dummy(f1, f2) from stdin with(format csv);" ^^^这适用于50MB文件!它似乎不需要大量的内存缓冲区。它不显示进度。这种方法适用于非常大的10GB文件吗? 100GB?等等?这是强大还是我真的需要使用数据管道产品?

1 个答案:

答案 0 :(得分:1)

我最终将DMS用于此设计,并以S3作为源,并以postgres为目标。应该对DMS进行脚本化处理,以使过程可重复且按需进行,但是如果您一次又一次需要数据加载,那么脚本将从可移植的结果中获得一致的回报实用程序