Mysql
 sql >> Database >  >> RDS >> Mysql

C'è un modo per eseguire un dump SQL da Amazon Redshift

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
;