pg_dump
van schema's werkte in het verleden misschien niet, maar nu wel.
pg_dump -Cs -h my.redshift.server.com -p 5439 database_name > database_name.sql
CAVEAT LEGER: pg_dump
produceert nog steeds enige postgres-specifieke syntaxis, en negeert ook de Redshift SORTKEY
en DISTSTYLE
definities voor uw tabellen.
Een andere goede optie is om de gepubliceerde AWS te gebruiken beheerdersscriptweergaven voor het genereren van uw DDL. Het behandelt de SORTKEY/DISTSTYLE, maar ik heb ontdekt dat het bugs bevat als het gaat om het vastleggen van alle BUITENLANDSE SLEUTELS, en het behandelt geen tafelpermissies/-eigenaren. Uw kilometerstand kan variëren.
Om een dump van de gegevens zelf te krijgen, moet je nog steeds de gebruiken UNLOAD
commando
helaas op elke tafel.
Hier is een manier om het te genereren. Houd er rekening mee dat select *
syntaxis zal mislukken als uw bestemmingstabel niet dezelfde kolomvolgorde heeft als uw brontabel:
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
;