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
;