2013-11-28 21 views
12

Tôi rất mới đối với AWS và Postgresql.cách nhập tệp dữ liệu từ s3 sang postgresql rds

  1. tôi đã tạo ra một db PostgreSQL (sử dụng rds trên là)
  2. Tôi đã tải lên một số tài liệu cho nhiều xô s3
  3. Tôi có một EC2 (Amazon Linux 64 bit) chạy

Tôi đã cố gắng sử dụng một đường dẫn dữ liệu, nhưng không có gì có vẻ là có sẵn (template) cho Postgres. Tôi không thể tìm ra cách kết nối với cá thể RDS của mình và nhập/xuất dữ liệu từ postgres.

Tôi giả định rằng tôi có thể sử dụng EC2 để lấy từ thùng S3 của tôi và nhập vào Postgres thay vì không có sẵn mẫu đường dẫn dữ liệu. Nếu có thể tôi không có ý tưởng như thế nào .. Xin cho biết nếu có thể ..

+1

Lý tưởng nhất là Amazon sẽ muốn mở rộng 'lệnh COPY' để hỗ trợ URL S3 cho đường dẫn tập tin, nhưng tôi sẽ không ngạc nhiên nếu vì bây giờ bạn có để lấy dữ liệu từ S3 qua một khách hàng mà sau đó cấp nó cho PostgreSQL thông qua 'COPY'. –

+0

Có, với RDS, thông thường bạn sẽ cần tải từ phiên bản EC2. Chỉ có các hệ thống cơ sở dữ liệu tùy chỉnh như Redshift có xu hướng cho phép tải trực tiếp từ s3. – datasage

+0

Cảm ơn cả hai. Bạn có thể cung cấp bất kỳ ví dụ nào về cách thực hiện điều này không? Tôi có thể kết nối EC2 với S3 và EC2 với RDS. Tôi có một ý tưởng về làm thế nào để kéo tập tin từ S3 xuống EC2, nhưng tại thời điểm đó tôi không có ý tưởng làm thế nào để tải các tập tin từ EC2 vào Postgresql DB (chạy trên res). Xin vui lòng giúp đỡ hoặc chỉ cho tôi hướng dẫn. Tôi đã tìm kiếm trực tuyến trong vài ngày rồi .. – user3044239

Trả lời

2

nếu bạn có thể khởi chạy client psql và kết nối với RDS trên EC2 Ví dụ, bạn sẽ có thể sử dụng lệnh sau:

\ copy customer_orders từ 'myfile.csv' bằng DELIMITER ','

9

Tôi muốn AWS mở rộng lệnh COPY trong RDS Postgresql như trong Redshift. Nhưng bây giờ họ đã không và chúng ta phải làm điều đó một mình.

  1. Install awscli trên hộp EC2 của bạn (nó có thể đã được cài đặt theo mặc định)
  2. Cấu hình của bạn awscli với các thông tin
  3. Sử dụng aws s3 sync hoặc aws s3 cp commmands tải từ s3 vào thư mục địa phương của bạn
  4. Sử dụng psql lệnh để \COPY các tệp vào RDS của bạn (yêu cầu \ để sao chép từ thư mục khách hàng)

Ví dụ:

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

Điều này vẫn còn thực tế, hoặc có chức năng cập nhật của Amazon Redshifts 'bây giờ? Tôi có cùng một câu hỏi, ngoại trừ việc tôi cần phải tự động hóa việc này và nhập các tệp (.csv) từ S3 trên cơ sở hàng tuần vào trong trường hợp PostGresql RDS của tôi –

5

Câu trả lời trước đã bị thay thế bởi các sự kiện gần đây tại AWS.

Hiện tại, hỗ trợ tuyệt vời cho tải cơ sở dữ liệu S3-to-RDS thông qua dịch vụ Đường ống Dữ liệu (có thể được sử dụng cho nhiều tác vụ chuyển đổi dữ liệu khác, đây chỉ là một ví dụ).

Bài viết AWS này dành cho S3-to-RDS-MySQL. Nên rất giống với RDS-Postgres.

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

Các vấn đề liên quan