pg_dump
av scheman kanske inte har fungerat tidigare, men det gör det nu.
pg_dump -Cs -h my.redshift.server.com -p 5439 database_name > database_name.sql
CAVEAT EMPTOR: pg_dump
producerar fortfarande en viss postgres-specifik syntax och försummar även rödförskjutningen SORTKEY
och DISTSTYLE
definitioner för dina tabeller.
Ett annat bra alternativ är att använda den publicerade AWS admin skriptvyer för att generera din DDL. Den hanterar SORTKEY/DISTSTYLE, men jag har tyckt att den är buggig när det gäller att fånga alla UTLÄNDSKA NYCKLAR, och hanterar inte tabellbehörigheter/ägare. Din körsträcka kan variera.
För att få en dumpning av själva data måste du fortfarande använda UNLOAD
kommando
på varje bord tyvärr.
Här är ett sätt att skapa det. Tänk på att select *
syntax kommer att misslyckas om din måltabell inte har samma kolumnordning som din källtabell:
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
;