brug pg_getfunctiondef
; se systeminformationsfunktioner. pg_getfunctiondef
blev tilføjet i PostgreSQL 8.4.
SELECT pg_get_functiondef('proc_name'::regproc);
For at dumpe alle funktioner i et skema kan du forespørge systemtabellerne i pg_catalog
; sige, hvis du ville have alt fra 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 er trivielt at ændre ovenstående til at sige "fra alle skemaer undtagen dem, der begynder med pg_
" i stedet hvis det er det du ønsker.
I psql
du kan dumpe dette til en fil med:
psql -At dbname > /path/to/output/file.sql <<"__END__"
... the above SQL ...
__END__
For at køre output i en anden DB, brug noget som:
psql -1 -v ON_ERROR_STOP -f /path/to/output/file.sql target_db_name
Hvis du replikerer funktioner mellem DB'er som denne, skal du dog overveje at gemme den autoritative kopi af funktionsdefinitionerne som et SQL-script i et revisionskontrolsystem som svn eller git, helst pakket som en PostgreSQL-udvidelse. Se pakkeudvidelser.