2013-03-15 22 views

Trả lời

2

Hiện tại, chúng tôi đang sử dụng Workbench/J thành công với tính năng Redshift.

Về bãi chứa, tại thời điểm không có công cụ xuất giản đồ có sẵn trong Redshift (pg_dump không hoạt động), mặc dù dữ liệu luôn có thể được trích xuất thông qua truy vấn.

Hy vọng sẽ trợ giúp.

EDIT: Hãy nhớ rằng những thứ như phím sắp xếp và phân phối không được phản ánh trên mã do Workbench/J tạo. Hãy xem bảng hệ thống pg_table_def để xem thông tin về mọi trường. Nó cho biết nếu một trường là khóa hoặc phân phối và thông tin đó. Tài liệu trên bàn rằng:

http://docs.aws.amazon.com/redshift/latest/dg/r_PG_TABLE_DEF.html

+1

Tôi cũng đang sử dụng thành công Workbench/J và có thể xác nhận nó hoạt động. –

+0

Không chắc tại sao bạn nói pg_dump không hoạt động; nó làm việc tốt cho tôi, mặc dù như bạn đã nói cho Workbench/J, distkey/sortkey cũng không được bao gồm. – congusbongus

23

pg_dump của lược đồ có thể không làm việc trong quá khứ, nhưng nó bây giờ.

pg_dump -Cs -h my.redshift.server.com -p 5439 database_name > database_name.sql

caveat emptor:pg_dump vẫn sản xuất một số postgres cú pháp cụ thể, và cũng có thể bỏ qua các định nghĩa chuyển đỏ SORTKEYDISTSTYLE cho các bảng của bạn.

Một tùy chọn phù hợp khác là use the published AWS admin script views để tạo DDL của bạn. Nó xử lý các SORTKEY/DISTSTYLE, nhưng tôi đã tìm thấy nó được lỗi khi nói đến nắm bắt tất cả các phím NGOẠI HỐI, và không xử lý các quyền/chủ sở hữu bảng. Milage của bạn có thể khác nhau.

Để có được kết xuất dữ liệu, bạn vẫn cần sử dụng UNLOAD command trên mỗi bảng.

Đây là cách tạo. Hãy nhận biết rằng select * cú pháp sẽ thất bại nếu bảng điểm đến của bạn không có thứ tự cột tương tự như bảng nguồn của bạn:

select 
    ist.table_schema, 
    ist.table_name, 
    'unload (''select col1,col2,etc from "' || ist.table_schema || '"."' || ist.table_name || '"'') 
to ''s3://SOME/FOLDER/STRUCTURE/' || ist.table_schema || '.' || ist.table_name || '__'' 
credentials ''aws_access_key_id=KEY;aws_secret_access_key=SECRET'' 
delimiter as '','' 
gzip 
escape 
addquotes 
null as '''' 
--encrypted 
--parallel off 
--allowoverwrite 
;' 
from information_schema.tables ist 
where ist.table_schema not in ('pg_catalog') 
order by ist.table_schema, ist.table_name 
; 
+0

thực sự, pg_dump hoạt động ngay bây giờ – gauravphoenix

0

Nếu bạn đang sử dụng một máy Mac, tôi đang sử dụng Postico và nó hoạt động tuyệt vời. Chỉ cần nhấp chuột phải vào bảng và nhấp vào xuất.

1

Có, bạn có thể làm như vậy thông qua một số cách.

  1. UNLOAD() vào Thùng S3 - Điều tốt nhất. Bạn có thể lấy dữ liệu của bạn trên hầu hết các máy khác. (Thông tin thêm tại đây: http://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html)

  2. Chia nội dung của bảng thành tệp dữ liệu bằng phiên bản Linux bạn có. Vì vậy, chạy:

    $> psql -t -A -F 'your_delimiter' -h 'tên máy chủ' -d 'cơ sở dữ liệu' -U 'người dùng' -c "chọn * từ myTable" >>/home/userA/tableDataFile sẽ thực hiện thủ thuật cho bạn.

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