sql >> Database >  >> RDS >> Mysql

Is er een manier om een ​​SQL-dump van Amazon Redshift te doen?

pg_dump van schema's werkte in het verleden misschien niet, maar nu wel.

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

CAVEAT LEGER: pg_dump produceert nog steeds enige postgres-specifieke syntaxis, en negeert ook de Redshift SORTKEY en DISTSTYLE definities voor uw tabellen.

Een andere goede optie is om de gepubliceerde AWS te gebruiken beheerdersscriptweergaven voor het genereren van uw DDL. Het behandelt de SORTKEY/DISTSTYLE, maar ik heb ontdekt dat het bugs bevat als het gaat om het vastleggen van alle BUITENLANDSE SLEUTELS, en het behandelt geen tafelpermissies/-eigenaren. Uw kilometerstand kan variëren.

Om een ​​dump van de gegevens zelf te krijgen, moet je nog steeds de gebruiken UNLOAD commando helaas op elke tafel.

Hier is een manier om het te genereren. Houd er rekening mee dat select * syntaxis zal mislukken als uw bestemmingstabel niet dezelfde kolomvolgorde heeft als uw brontabel:

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
;


  1. DatabaseError:huidige transactie is afgebroken, opdrachten genegeerd tot einde transactieblok?

  2. MySQL-fout bij het afkappen van de tabel

  3. Databasetabellen vullen met een grote hoeveelheid testgegevens

  4. inlogsessie vernietigd na vernieuwen