我对AWS和Postgresql非常陌生。
- 我已经创建了一个Postgresql数据库(使用AWS上的RDS)。
- 我已将多个文档上传到多个S3存储桶中。
- 我正在运行Amazon Linux 64位的EC2实例。
我尝试使用数据管道,但似乎没有可用于Postgres的模板。我无法弄清如何连接到我的RDS实例并导入/导出Postgres中的数据。
我认为可以使用EC2从我的S3存储桶中获取数据,并导入到Postgres中,以代替没有数据管道模板的情况。如果可能,请指导我如何操作。
我对AWS和Postgresql非常陌生。
我尝试使用数据管道,但似乎没有可用于Postgres的模板。我无法弄清如何连接到我的RDS实例并导入/导出Postgres中的数据。
我认为可以使用EC2从我的S3存储桶中获取数据,并导入到Postgres中,以代替没有数据管道模板的情况。如果可能,请指导我如何操作。
现在,对于 PostgreSQL Aurora 和 RDS PostgreSQL >= 11.1 版本,可以通过 aws_s3
扩展程序直接从 S3 导入数据到 RDS 中了。
参数与 PostgreSQL COPY 命令相似。
psql=> SELECT aws_s3.table_import_from_s3(
'table_name', '', '(format csv)',
'BUCKET_NAME', 'path/to/object', 'us-east-2'
);
请注意,此功能不适用于旧版本。
awscli
(可能已默认安装)awscli
aws s3 sync
或aws s3 cp
命令将文件从S3下载到本地目录\COPY
到您的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
扩展支持从S3复制命令。请参见下面@quiver的答案。 - Adam Cooper之前的回答已经被AWS最近的事件所取代。
现在,通过数据管道服务,S3到RDS数据库的加载得到了很好的支持(这也可以用于许多其他数据转换任务,这只是一个示例)。
此AWS文章是关于S3到RDS-MySQL的。对于RDS-Postgres应该非常相似。
http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-template-copys3tords.html
\copy customer_orders from 'myfile.csv' with DELIMITER ','
COPY
命令以支持 S3 URL 文件路径,但如果目前需要通过客户端从 S3 拉取数据并通过COPY
提供给 PostgreSQL,我也不会感到意外。 - Craig Ringer