pg_dump
на схеми може да не са работили в миналото, но сега работи.
pg_dump -Cs -h my.redshift.server.com -p 5439 database_name > database_name.sql
ПРЕДУПРЕЖДЕНИЕ EMPTOR: pg_dump
все още произвежда някакъв синтаксис, специфичен за postgres, и също така пренебрегва Redshift SORTKEY
и DISTSTYLE
дефиниции за вашите таблици.
Друга достойна опция е да използвате публикувания AWS изгледи на администраторски скрипт за генериране на вашия DDL. Той обработва SORTKEY/DISTSTYLE, но открих, че е бъг, когато става въпрос за улавяне на всички ВЪНШИ КЛЮЧОВЕ, и не обработва разрешенията/собствениците на таблицата. Вашият пробег може да варира.
За да получите дъмп на самите данни, все пак трябва да използвате UNLOAD
команда
на всяка маса за съжаление.
Ето начин да го генерирате. Имайте предвид, че select *
синтаксисът ще се провали, ако вашата целева таблица няма същия ред на колоните като вашата изходна таблица:
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
;