użyj pg_getfunctiondef
; zobacz funkcje informacji o systemie. pg_getfunctiondef
został dodany w PostgreSQL 8.4.
SELECT pg_get_functiondef('proc_name'::regproc);
Aby zrzucić wszystkie funkcje w schemacie, możesz wysłać zapytanie do tabel systemowych w pg_catalog
; powiedz, czy chcesz wszystko od 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';
trywialne jest zmienić powyższe, aby powiedzieć "ze wszystkich schematów z wyjątkiem tych zaczynających się od pg_
zamiast tego, jeśli tego chcesz.
W psql
możesz zrzucić to do pliku za pomocą:
psql -At dbname > /path/to/output/file.sql <<"__END__"
... the above SQL ...
__END__
Aby uruchomić wyjście w innym DB, użyj czegoś takiego:
psql -1 -v ON_ERROR_STOP -f /path/to/output/file.sql target_db_name
Jeśli jednak replikujesz funkcje między takimi bazami danych, rozważ przechowywanie autoratywnej kopii definicji funkcji jako skryptu SQL w systemie kontroli wersji, takim jak svn lub git, najlepiej spakowanym jako rozszerzenie PostgreSQL. Zobacz rozszerzenia opakowań.