sql >> データベース >  >> RDS >> PostgreSQL

Postgresでのみ関数のバックアップを取る方法

    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拡張機能としてパッケージ化してください。パッケージ拡張機能を参照してください。



    1. SQL Serverで外部キー制約を無効にする方法(T-SQLの例)

    2. MySQLとMariaDBのディザスタリカバリ計画

    3. マスター高可用性マネージャー(MHA)がクラッシュしました!私は今何をしますか?

    4. PostgreSQLのパラメータ化されたOrderBy/ Limit in table function