pg_dump
schémat možná v minulosti nefungovalo, ale nyní ano.
pg_dump -Cs -h my.redshift.server.com -p 5439 database_name > database_name.sql
CAVEAT EMPTOR: pg_dump
stále produkuje určitou postgresovou specifickou syntaxi a také zanedbává Redshift SORTKEY
a DISTSTYLE
definice pro vaše tabulky.
Další slušnou možností je použít publikovaný AWS zobrazení administrátorského skriptu pro generování vašeho DDL. Zvládá SORTKEY/DISTSTYLE, ale zjistil jsem, že je to buggy, pokud jde o zachycení všech CIZÍCH KLÍČŮ, a nezpracovává oprávnění/vlastníky tabulky. Vaše kilometry se mohou lišit.
Chcete-li získat výpis samotných dat, stále musíte použít UNLOAD
příkaz
bohužel na každém stole.
Zde je způsob, jak jej vygenerovat. Uvědomte si, že select *
syntaxe selže, pokud cílová tabulka nemá stejné pořadí sloupců jako zdrojová tabulka:
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
;