Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gibt es eine Möglichkeit, einen SQL-Dump von Amazon Redshift zu erstellen

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
;