sql >> Database >  >> RDS >> PostgreSQL

Een back-up maken van functies alleen in Postgres

gebruik pg_getfunctiondef; zie systeeminformatiefuncties. pg_getfunctiondef is toegevoegd in PostgreSQL 8.4.

SELECT pg_get_functiondef('proc_name'::regproc);

Om alle functies in een schema te dumpen, kunt u de systeemtabellen opvragen in pg_catalog; zeg of je alles wilt van public :

SELECT pg_get_functiondef(f.oid)
FROM pg_catalog.pg_proc f
INNER JOIN pg_catalog.pg_namespace n ON (f.pronamespace = n.oid)
WHERE n.nspname = 'public';

het is triviaal om het bovenstaande te veranderen om "van alle schema's te zeggen behalve die beginnen met pg_ " in plaats daarvan als je dat wilt.

In psql je kunt dit naar een bestand dumpen met:

psql -At dbname > /path/to/output/file.sql <<"__END__"
... the above SQL ...
__END__

Om de uitvoer in een andere DB uit te voeren, gebruik je zoiets als:

psql -1 -v ON_ERROR_STOP -f /path/to/output/file.sql target_db_name

Als je echter functies tussen DB's op deze manier repliceert, overweeg dan om de gezaghebbende kopie van de functiedefinities op te slaan als een SQL-script in een revisiecontrolesysteem zoals svn of git, bij voorkeur verpakt als een PostgreSQL-extensie. Zie verpakkingsextensies.



  1. SQLite - Back-up van een database naar bestand

  2. PostgreSQL-taakverdeling en proxySQL-verbeteringen - ClusterControl 1.5

  3. SQLite-volgorde op datum1530019888000

  4. Hoe selecteer ik efficiënt de vorige niet-null-waarde?