pg_dump
af skemaer har måske ikke virket tidligere, men det gør det nu.
pg_dump -Cs -h my.redshift.server.com -p 5439 database_name > database_name.sql
FORHOLDSREGLER: pg_dump
producerer stadig en postgres-specifik syntaks og forsømmer også Redshift SORTKEY
og DISTSTYLE
definitioner for dine tabeller.
En anden anstændig mulighed er at bruge den offentliggjorte AWS admin script visninger til at generere din DDL. Det håndterer SORTKEY/DISTSTYLE, men jeg har fundet ud af, at det er buggy, når det kommer til at fange alle UDENLANDSKE NØGLER, og håndterer ikke tabeltilladelser/ejere. Dit kilometertal kan variere.
For at få et dump af selve dataene skal du stadig bruge UNLOAD
kommando
på hvert bord desværre.
Her er en måde at generere det på. Vær opmærksom på, at select *
syntaks vil mislykkes, hvis din destinationstabel ikke har samme kolonnerækkefølge som din kildetabel:
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
;