pg_dump
degli schemi potrebbe non aver funzionato in passato, ma ora funziona.
pg_dump -Cs -h my.redshift.server.com -p 5439 database_name > database_name.sql
CAVEEAT EMPTOR: pg_dump
produce ancora una sintassi specifica per Postgres e trascura anche il SORTKEY
di Redshift e DISTSTYLE
definizioni per le tue tabelle.
Un'altra opzione decente è utilizzare l'AWS pubblicato visualizzazioni script di amministrazione per generare il tuo DDL. Gestisce SORTKEY/DISTSTYLE, ma l'ho trovato difettoso quando si tratta di acquisire tutte le CHIAVI STRANIERE e non gestisce i permessi/proprietari della tabella. Il tuo chilometraggio può variare.
Per ottenere un dump dei dati stessi, è comunque necessario utilizzare UNLOAD
comando
su ogni tavolo purtroppo.
Ecco un modo per generarlo. Tieni presente che select *
la sintassi avrà esito negativo se la tabella di destinazione non ha lo stesso ordine di colonna della tabella di origine:
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
;