pg_dump
des schémas n'ont peut-être pas fonctionné dans le passé, mais c'est le cas maintenant.
pg_dump -Cs -h my.redshift.server.com -p 5439 database_name > database_name.sql
CAVEAT EMPTOR : pg_dump
produit toujours une syntaxe spécifique à postgres, et néglige également le Redshift SORTKEY
et DISTSTYLE
définitions pour vos tables.
Une autre option décente consiste à utiliser l'AWS publié vues de script d'administration pour générer votre DDL. Il gère le SORTKEY/DISTSTYLE, mais je l'ai trouvé bogué lorsqu'il s'agit de capturer toutes les CLES FOREIGN, et ne gère pas les autorisations/propriétaires de table. Votre kilométrage peut varier.
Pour obtenir un vidage des données elles-mêmes, vous devez toujours utiliser le UNLOAD
commande
sur chaque table malheureusement.
Voici un moyen de le générer. Sachez que select *
échouera si votre table de destination n'a pas le même ordre de colonne que votre table source :
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
;