pg_dump
schematów może nie działało w przeszłości, ale teraz działa.
pg_dump -Cs -h my.redshift.server.com -p 5439 database_name > database_name.sql
WYPŁACA GROTA: pg_dump
nadal tworzy pewną składnię specyficzną dla Postgresa, a także pomija Redshift SORTKEY
i DISTSTYLE
definicje dla twoich tabel.
Inną przyzwoitą opcją jest korzystanie z opublikowanego AWS widoki skryptu administratora do generowania DDL. Obsługuje SORTKEY/DISTSTYLE, ale uważam, że jest to błędne, jeśli chodzi o przechwytywanie wszystkich FOREIGN KEY, i nie obsługuje uprawnień/właścicieli tabeli. Twój przebieg może się różnić.
Aby uzyskać zrzut samych danych, nadal musisz użyć UNLOAD
polecenie
na każdym stole niestety.
Oto sposób na jego wygenerowanie. Pamiętaj, że select *
składnia nie powiedzie się, jeśli tabela docelowa nie ma takiej samej kolejności kolumn jak tabela źródłowa:
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
;