pg_dump
skema mungkin tidak berfungsi di masa lalu, tetapi sekarang berhasil.
pg_dump -Cs -h my.redshift.server.com -p 5439 database_name > database_name.sql
PERINGATAN EMPTOR: pg_dump
masih menghasilkan beberapa sintaks khusus postgres, dan juga mengabaikan SORTKEY
Red Redshift dan DISTSTYLE
definisi untuk tabel Anda.
Opsi lain yang layak adalah menggunakan AWS yang diterbitkan tampilan skrip admin untuk menghasilkan DDL Anda. Ini menangani SORTKEY/DISTSTYLE, tetapi saya merasa itu bermasalah ketika harus menangkap semua KUNCI ASING, dan tidak menangani izin/pemilik tabel. Mileage Anda mungkin berbeda.
Untuk mendapatkan dump data itu sendiri, Anda masih perlu menggunakan UNLOAD
perintah
di setiap meja sayangnya.
Berikut cara untuk menghasilkannya. Ketahuilah bahwa select *
sintaks akan gagal jika tabel tujuan Anda tidak memiliki urutan kolom yang sama dengan tabel sumber Anda:
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
;