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.