sql >> Databasteknik >  >> RDS >> Mysql

Finns det något sätt att göra en SQL-dump från Amazon Redshift

pg_dump av scheman kanske inte har fungerat tidigare, men det gör det nu.

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

CAVEAT EMPTOR: pg_dump producerar fortfarande en viss postgres-specifik syntax och försummar även rödförskjutningen SORTKEY och DISTSTYLE definitioner för dina tabeller.

Ett annat bra alternativ är att använda den publicerade AWS admin skriptvyer för att generera din DDL. Den hanterar SORTKEY/DISTSTYLE, men jag har tyckt att den är buggig när det gäller att fånga alla UTLÄNDSKA NYCKLAR, och hanterar inte tabellbehörigheter/ägare. Din körsträcka kan variera.

För att få en dumpning av själva data måste du fortfarande använda UNLOAD kommando på varje bord tyvärr.

Här är ett sätt att skapa det. Tänk på att select * syntax kommer att misslyckas om din måltabell inte har samma kolumnordning som din källtabell:

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. Hur man konverterar en sträng till gemener i SQL

  2. Finns det en generisk lösning för att uttrycka en härledd kolumnlista i Oracle (och MySQL)?

  3. Hur man framgångsrikt skriver om gammal mysql-php-kod med föråldrade mysql_*-funktioner?

  4. Spara data till PHP / Mysql med inline-redigering i CKEditor