Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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
如何将数据文件从s3导入postgresql rds_Postgresql_Amazon S3_Amazon Ec2 - Fatal编程技术网

如何将数据文件从s3导入postgresql rds

如何将数据文件从s3导入postgresql rds,postgresql,amazon-s3,amazon-ec2,Postgresql,Amazon S3,Amazon Ec2,我对AWS和Postgresql非常陌生 我已经创建了一个Postgresql数据库(在was上使用rds) 我已将几个文档上载到多个s3存储桶 我有一个EC2(Amazon Linux 64位)正在运行 我试着使用一个数据管道,但似乎没有任何东西(模板)可用于Postgres。我不知道如何连接到我的RDS实例并从postgres导入/导出数据 我假设我可以使用EC2从我的S3 bucket中抓取数据并导入Postgres,而不必使用任何数据管道模板。如果可能的话,我不知道怎么做。。如果可能,请

我对AWS和Postgresql非常陌生

  • 我已经创建了一个Postgresql数据库(在was上使用rds)
  • 我已将几个文档上载到多个s3存储桶
  • 我有一个EC2(Amazon Linux 64位)正在运行
  • 我试着使用一个数据管道,但似乎没有任何东西(模板)可用于Postgres。我不知道如何连接到我的RDS实例并从postgres导入/导出数据


    我假设我可以使用EC2从我的S3 bucket中抓取数据并导入Postgres,而不必使用任何数据管道模板。如果可能的话,我不知道怎么做。。如果可能,请告知..

    如果您可以启动psql客户端并连接到EC2实例上的RDS,您应该能够使用以下命令:


    \用分隔符“,”从“myfile.csv”复制客户订单。

    我希望AWS在RDS Postgresql中像在红移中那样扩展复制命令。但现在他们没有,我们必须自己做

  • 在EC2盒上安装
    awscli
    (默认情况下可能已安装)
  • 使用凭据配置您的
    awscli
  • 使用
    aws s3 sync
    aws s3 cp
    命令从s3下载到本地目录
  • 使用psql命令将文件
    \复制到RDS中(需要
    \
    从客户端目录复制)
  • 例如:

    aws s3 cp s3://bucket/file.csv /mydirectory/file.csv
    psql -h your_rds.amazonaws.com -U username -d dbname -c '\COPY table FROM ''file.csv'' CSV HEADER'
    

    先前的答案已被AWS最近的事件所取代

    现在,通过数据管道服务(也可以用于许多其他数据转换任务,这只是一个示例)对S3到RDS数据库加载提供了极好的支持

    这篇AWS文章是针对S3到RDS MySQL的。对于RDS研究生来说应该非常相似


    S3->RDS直接加载现在可以作为
    aws_S3
    扩展,用于PostgreSQL Aurora和RDS PostgreSQL>=11.1

    参数类似于命令的参数


    请注意,此功能不适用于较旧版本。

    理想情况下,Amazon希望扩展
    COPY
    命令以支持文件路径的S3 URL,但如果现在您必须通过客户端从S3获取数据,然后通过
    COPY
    将数据提供给PostgreSQL,我不会感到惊讶。是的,使用RDS,通常需要从EC2实例加载。只有像Redshift这样的自定义数据库系统才允许从s3直接加载。谢谢你们。你们中的任何一个能提供一些例子来说明如何做到这一点吗?我能够将EC2连接到S3,并将EC2连接到RDS。我知道如何将文件从S3拉到EC2,但那时我不知道如何将文件从EC2加载到Postgresql数据库(在res上运行)。请帮助我或给我指一下说明。我已经在网上搜索了好几天了。这仍然是真的吗,或者亚马逊已经更新了红移的功能了吗?我有完全相同的问题,只是我需要自动执行此操作,并每周将文件(.csv)从S3导入我的PostGresql RDS实例。PostGresql基于community PostGresql,community PostGresql COPY语句在当前版本中不支持从/复制到S3。这不再是事实,RDS现在支持通过
    aws_S3
    扩展从S3复制comamnd。请看下面@quiver的答案。有人能确认这在RDS Postgres中有效吗?Chris links的文档中根本不清楚是否支持S3到Postgres。“AWS数据管道支持所有Amazon RDS数据库,现在可用”,它在本地文件上运行,而不是在S3上运行。您能提供步骤吗?AWS文档有点不清楚,很少在psql中,很少是普通命令,在哪里运行这些命令?在cmd?您在这里给出的PSQL命令,它如何理解加载到哪个表?您知道如何在通过此S3导入加载时处理空csv吗。因为我有一个场景,从S3自动加载CSV文件到postgres RDS。有时候,我最终得到的是空的csv。这会导致连接故障。
    psql=> SELECT aws_s3.table_import_from_s3(
     'table_name', '', '(format csv)',
     'BUCKET_NAME', 'path/to/object', 'us-east-2'
    );