pg_getfunctiondef
を使用します;システム情報機能を参照してください。 pg_getfunctiondef
PostgreSQL8.4で追加されました。
SELECT pg_get_functiondef('proc_name'::regproc);
スキーマ内のすべての関数をダンプするには、pg_catalog
でシステムテーブルをクエリできます。; 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';
上記を変更して、pg_
で始まるスキーマを除くすべてのスキーマから"と言うのは簡単です。 " 代わりに、それが必要な場合。
psql
で これを次のファイルにダンプできます:
psql -At dbname > /path/to/output/file.sql <<"__END__"
... the above SQL ...
__END__
別のDBで出力を実行するには、次のようなものを使用します。
psql -1 -v ON_ERROR_STOP -f /path/to/output/file.sql target_db_name
ただし、このようにDB間で関数を複製する場合は、関数定義の信頼できるコピーをSQLスクリプトとしてsvnやgitなどのリビジョン管理システムに保存することを検討してください。できればPostgreSQL拡張機能としてパッケージ化してください。パッケージ拡張機能を参照してください。