pg_dump
lược đồ có thể không hoạt động trong quá khứ, nhưng bây giờ thì có.
pg_dump -Cs -h my.redshift.server.com -p 5439 database_name > database_name.sql
CAVEAT EMPTOR: pg_dump
vẫn tạo ra một số cú pháp cụ thể của postgres và cũng bỏ qua Redshift SORTKEY
và DISTSTYLE
định nghĩa cho các bảng của bạn.
Một tùy chọn phù hợp khác là sử dụng AWS đã xuất bản chế độ xem tập lệnh quản trị để tạo DDL của bạn. Nó xử lý SORTKEY / DISTSTYLE, nhưng tôi thấy nó có lỗi khi nắm bắt tất cả các FOREIGN KEY và không xử lý quyền / chủ sở hữu bảng. Số tiền của bạn có thể thay đổi.
Để lấy chính dữ liệu kết xuất, bạn vẫn cần sử dụng UNLOAD
lệnh
trên mỗi bàn không may.
Đây là một cách để tạo ra nó. Lưu ý rằng select *
cú pháp sẽ không thành công nếu bảng đích của bạn không có cùng thứ tự cột với 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
;