我是AWS和Postgresql的新手。
我尝试使用数据管道,但Postgres似乎没有任何可用的(模板)。我无法弄清楚如何连接到我的RDS实例并从postgres导入/导出数据。
我认为我可以使用EC2从我的S3存储桶中获取并导入Postgres,而不是没有可用的数据管道模板。如果有可能我不知道如何..请尽可能建议..
答案 0 :(得分:18)
我希望AWS在RDS Postgresql中扩展COPY命令,就像在Redshift中一样。但是现在他们没有,我们必须自己做。
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'
答案 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。