använd pg_getfunctiondef
; se systeminformationsfunktioner. pg_getfunctiondef
lades till i PostgreSQL 8.4.
SELECT pg_get_functiondef('proc_name'::regproc);
För att dumpa alla funktioner i ett schema kan du fråga systemtabellerna i pg_catalog
; säg om du ville ha allt från 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';
det är trivialt att ändra ovanstående till att säga "från alla scheman utom de som börjar med pg_
" istället om det är vad du vill.
I psql
du kan dumpa detta till en fil med:
psql -At dbname > /path/to/output/file.sql <<"__END__"
... the above SQL ...
__END__
För att köra utdata i en annan DB, använd något som:
psql -1 -v ON_ERROR_STOP -f /path/to/output/file.sql target_db_name
Om du replikerar funktioner mellan DB:er som denna, överväg dock att lagra den auktorativa kopian av funktionsdefinitionerna som ett SQL-skript i ett revisionskontrollsystem som svn eller git, helst paketerat som en PostgreSQL-tillägg. Se förpackningstillägg.