pg_dump
von Schemata hat in der Vergangenheit vielleicht nicht funktioniert, aber jetzt funktioniert es.
pg_dump -Cs -h my.redshift.server.com -p 5439 database_name > database_name.sql
VORBEHALT EMPTOR: pg_dump
erzeugt immer noch einige Postgres-spezifische Syntax und vernachlässigt auch den Redshift SORTKEY
und DISTSTYLE
Definitionen für Ihre Tabellen.
Eine weitere anständige Option besteht darin, das veröffentlichte AWS zu verwenden Admin-Skriptansichten zum Generieren Ihrer DDL. Es behandelt den SORTKEY/DISTSTYLE, aber ich habe festgestellt, dass es fehlerhaft ist, wenn es darum geht, alle FOREIGN KEYs zu erfassen, und behandelt keine Tabellenberechtigungen/-besitzer. Ihr Kilometerstand kann variieren.
Um einen Dump der Daten selbst zu erhalten, müssen Sie immer noch verwenden UNLOAD
Befehl
leider auf jedem Tisch.
Hier ist eine Möglichkeit, es zu generieren. Beachten Sie, dass select *
Syntax schlägt fehl, wenn Ihre Zieltabelle nicht dieselbe Spaltenreihenfolge wie Ihre Quelltabelle hat:
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
;