Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Existe uma maneira de fazer um dump SQL do Amazon Redshift


pg_dump de esquemas pode não ter funcionado no passado, mas funciona agora.

pg_dump -Cs -h my.redshift.server.com -p 5439 database_name > database_name.sql

CAVEAT EMPTOR: pg_dump ainda produz alguma sintaxe específica do postgres e também negligencia o Redshift SORTKEY e DISTSTYLE definições para suas tabelas.

Outra opção decente é usar o AWS publicado visualizações de script de administração para gerar seu DDL. Ele lida com o SORTKEY/DISTSTYLE, mas descobri que ele é problemático quando se trata de capturar todas as FOREIGN KEYs e não lida com permissões/proprietários de tabela. Sua milhagem pode variar.

Para obter um despejo dos dados em si, você ainda precisa usar o UNLOAD comando em cada mesa, infelizmente.

Aqui está uma maneira de gerá-lo. Esteja ciente de que select * sintaxe falhará se sua tabela de destino não tiver a mesma ordem de coluna que sua tabela de origem:
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
;