postgreSQL のデータをスキーマ間で移行する作業の時に調べ回ることになったのでメモ。
プロシージャ(かトリガのどちらか)の一覧は「\df
」で取得できる所までは、まあ大丈夫とする。
実際のソースは「SELECT prcsrc FROM pg_proc WHERE prcname = 'procedure_name'
」で取得できる。
とは言え、これではソースのみであり、完全な CREATE FUNCTION
文ではない。
そこで pg_dump を利用する。
スキーマをダンプする時にオブジェクトを一緒にダンプするように、次の SQL 文を使う。
「pg_dump --schema-only --oids -Fp db_name > filename
」(必要なら -h、-U、-p 等も使う)
これで希望の CREATE FUNCTION
文を入手できる。後はエディタでちゃっちゃと編集すればいい。
もしかすると、適当な空のテーブルを作っておいて「-t tablename
」を指定すると、余計なスキーマ情報が入らないかもしれない。…と思って試してみたら駄目だった。
あとは psql で入って「\i filename
」で読み込めば OK となる。