2013-11-28 85 views
12

我對AWS和Postgresql非常新穎。如何將數據文件從s3導入postgresql rds

  1. 我創建
  2. 我已經上傳多個文件到多個S3桶
  3. 我有一個EC2(亞馬遜的Linux 64位)上運行一個PostgreSQL數據庫(使用上是RDS)

我試圖使用數據管道,但似乎沒有什麼可用(模板)的Postgres。我無法弄清楚如何連接到我的RDS實例並從postgres導入/導出數據。

我認爲我可以使用EC2從我的S3存儲桶中獲取並導入到Postgres中,以代替沒有可用的數據管道模板。如果可能的話,我不知道如何..請告知,如果可能的..

+1

理想亞馬遜希望延長'COPY'命令支持文件路徑S3網址,但如果現在你有通過客戶端來從S3的數據那麼我不會感到驚訝通過「COPY」將它提供給PostgreSQL。 –

+0

是的,對於RDS,您通常需要從EC2實例加載。只有像Redshift這樣的自定義數據庫系統傾向於允許從s3直接加載。 – datasage

+0

謝謝你們兩位。你們能提供任何關於如何完成這個任務的例子嗎?我能夠將EC2連接到S3和EC2到RDS。我有一個關於如何將文件從S3下拉到EC2的想法,但那時我不知道如何將文件從EC2加載到PostgreSQL數據庫(在res上運行)。請幫忙或指點我的指示。我一直在網上搜索了幾天.. – user3044239

回答

2

,如果你能啓動PSQL客戶端並連接到RDS的EC2實例,你應該可以使用下面的命令:

\從'myfile.csv'用DELIMITER複製customer_orders,'

9

我希望AWS在RDS Postgresql中擴展COPY命令,就像他們在Redshift中所做的那樣。但現在他們沒有,我們必須自己做。

  1. 安裝到您的EC2盒awscli(它可能已被默認安裝)
  2. 配置您awscli有憑據
  3. 使用aws s3 syncaws s3 cp commmands從S3下載到本地目錄
  4. 使用PSQL命令將\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' 
+2

這仍然是實際的,或者亞馬遜現在更新了Redshifts的功能嗎?我有完全相同的問題,除了我需要自動執行此操作並從S3每週導入文件(.csv)到我的PostGresql RDS實例 –

相關問題