sql >> Base de Datos >  >> RDS >> Mysql

¿Hay alguna manera de hacer un volcado de SQL desde Amazon Redshift?

pg_dump de esquemas puede no haber funcionado en el pasado, pero ahora sí.

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

EMPTOR DE ADVERTENCIA: pg_dump todavía produce alguna sintaxis específica de postgres, y también descuida Redshift SORTKEY y DISTSTYLE definiciones para sus tablas.

Otra opción decente es usar el AWS publicado vistas de secuencias de comandos de administración para generar su DDL. Maneja SORTKEY/DISTSTYLE, pero descubrí que tiene errores cuando se trata de capturar todas las CLAVES EXTRANJERAS, y no maneja los permisos/propietarios de la tabla. Su kilometraje puede variar.

Para obtener un volcado de los datos en sí, aún necesita usar UNLOAD comando lamentablemente en cada mesa.

Aquí hay una manera de generarlo. Tenga en cuenta que select * la sintaxis fallará si su tabla de destino no tiene el mismo orden de columnas que su tabla de origen:

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
;