Có cách nào để thực hiện một kết xuất SQL từ Amazon Redshift không?Có cách nào để thực hiện kết xuất SQL từ Amazon Redshift
Bạn có thể sử dụng trình khách SQL làm việc/J không?
Có cách nào để thực hiện một kết xuất SQL từ Amazon Redshift không?Có cách nào để thực hiện kết xuất SQL từ Amazon Redshift
Bạn có thể sử dụng trình khách SQL làm việc/J không?
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
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. –
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
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 đỏ SORTKEY
và DISTSTYLE
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
;
thực sự, pg_dump hoạt động ngay bây giờ – gauravphoenix
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.
Có, bạn có thể làm như vậy thông qua một số cách.
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)
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.
Đây là nhận xét của Amazon về chủ đề: https://forums.aws.amazon.com/message.jspa?messageID = 428466 # 428466 –