Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 批量加载AWS S3至Postgres流媒体标准_Postgresql_Amazon Web Services_Amazon S3_Amazon Rds - Fatal编程技术网

Postgresql 批量加载AWS S3至Postgres流媒体标准

Postgresql 批量加载AWS S3至Postgres流媒体标准,postgresql,amazon-web-services,amazon-s3,amazon-rds,Postgresql,Amazon Web Services,Amazon S3,Amazon Rds,目标是将s3 bucket中的csv加载到RDS中postgres中的表中。寻找“最佳实践”,我发现AWS推荐他们的“数据管道”产品。他们为您提供了一个启动模板,用于将csv批量加载到rds mysql。该模板如下面的屏幕截图所示。我的反应是“哇-所有这些框和箭头只是为了将csv加载到表中?” 所以我的问题是“我们能找到一个更简单的方法来实现同样的目标吗?”。假设我的bucket、我的数据库和一个空闲层T2.micro EC2实例位于同一区域。假设AWS CLI和postgres客户端安装在E

目标是将s3 bucket中的csv加载到RDS中postgres中的表中。寻找“最佳实践”,我发现AWS推荐他们的“数据管道”产品。他们为您提供了一个启动模板,用于将csv批量加载到rds mysql。该模板如下面的屏幕截图所示。我的反应是“哇-所有这些框和箭头只是为了将csv加载到表中?”

所以我的问题是“我们能找到一个更简单的方法来实现同样的目标吗?”。假设我的bucket、我的数据库和一个空闲层T2.micro EC2实例位于同一区域。假设AWS CLI和postgres客户端安装在EC2上

我可以运行以下命令,将CSV从bucket读取到stdout,并将流输送到postgres bulk load命令:

aws s3 cp s3://mybucket/dummy.csv-| psql-d mydb-p 5432-c“使用(csv格式)从标准文本复制虚拟(f1,f2);”

^^^这适用于50MB文件!它似乎不需要大量的内存缓冲。它不显示进度。这种方法适用于10GB的超大文件吗?100GB?等这是健壮的还是我真的需要使用数据管道产品?

我最终使用DMS进行设计,S3作为源,postgres作为目标。DMS应采用cli脚本,以使过程可重复和按需进行,这可能会涉及到。但是,如果您需要偶尔加载一次数据,那么脚本在从便携式实用程序获得一致结果方面会有所回报。

FWIW以类似方式将300MB的文件从S3上传到RedShift。不过,我想知道是否有限制。@StuartLC redshift通过COPY命令对s3提供本机支持。这适用于TB级的平面文件。Postgres RDS没有对s3的本机支持,这就是我从STDIN获得管道的原因