Mysql
 sql >> Base de données >  >> RDS >> Mysql

Existe-t-il un moyen de faire un vidage SQL à partir d'Amazon Redshift

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
;