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

时间:2013-11-28 03:31:54

标签: postgresql amazon-s3 amazon-ec2

我是AWS和Postgresql的新手。

  1. 我创建了一个Postgresql数据库(使用rds on)
  2. 我已将多个文档上传到多个s3存储桶
  3. 我正在运行EC2(亚马逊Linux 64位)
  4. 我尝试使用数据管道,但Postgres似乎没有任何可用的(模板)。我无法弄清楚如何连接到我的RDS实例并从postgres导入/导出数据。

    我认为我可以使用EC2从我的S3存储桶中获取并导入Postgres,而不是没有可用的数据管道模板。如果有可能我不知道如何..请尽可能建议..

4 个答案:

答案 0 :(得分:18)

我希望AWS在RDS Postgresql中扩展COPY命令,就像在Redshift中一样。但是现在他们没有,我们必须自己做。

  1. 在您的EC2盒子上安装awscli(默认情况下可能已安装)
  2. 使用凭据
  3. 配置您的awscli
  4. 使用aws s3 syncaws s3 cp命令从s3下载到本地目录
  5. 使用psql命令将\COPY文件放入RDS(需要\从客户端目录复制)
  6. 示例:

    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'
    

答案 1 :(得分:12)

之前的答案已被AWS最近发生的事件所取代。

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

此AWS文章适用于S3-to-RDS-MySQL。 RDS-Postgres应该非常相似。

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

答案 2 :(得分:1)

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

\从'myfile.csv'复制customer_orders并使用DELIMITER','

答案 3 :(得分:1)

S3->从2019年4月24日开始,RDS PostgreSQL> = 11.1的aws_s3扩展名可以直接加载RDS。

参数与PostgreSQL COPY命令的参数相似

psql=> SELECT aws_s3.table_import_from_s3(
 'table_name', '', '(format csv)',
 'BUCKET_NAME', 'path/to/object', 'us-east-2'
);

请注意,此功能不适用于旧版本,尤其是Aurora PostgreSQL。