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

PostgreSql、スキーマオブジェクトDDLを抽出してSQLファイルを分離します

    クライアントマシンを使用している場合は、これをSQLスクリプト(例:export_plpgsql.sql)に入れることができます:

    \pset tuples_only on
    \pset footer off
    \set QUIET on
    \pset format unaligned
    \set QUIET off
    
    SELECT '\echo ''* Export '||(CASE proKind WHEN 'f' THEN 'Function' ELSE 'Procedure' END)||' : '||proName||''''
           ||chr(10)||'\copy (SELECT pg_get_functiondef('||p.oid||')) TO '''||:'export_path'||'/'||upper(proName)
           ||(CASE proKind WHEN 'f' THEN '.fct' ELSE '.prc' END)||''' WITH CSV;' as export_routine
    FROM pg_proc p
    WHERE proNamespace = (SELECT oid FROM pg_namespace WHERE nspName = lower(:'schema_name'))
    ORDER BY proName;
    

    そして、2つの引数を使用してそれを呼び出します:schema_nameとexport_path、例:

    psql -U my_ -d my_db -v schema_name=my_schema -v export_path=C:/temp/export_PG -f export_plpgsql.sql > C:\temp\export_plpgsql.gen.sql
    

    これにより、plpgsqlルーチンのすべてのexportsコマンドを含むスクリプトが生成されます(例:

    )。
    \copy (SELECT pg_get_functiondef(51296)) TO 'C:/temp/export_PG/my_procedure.prc' WITH CSV;
    

    最後のステップ:生成されたスクリプトを実行します

    psql -U my_ -d my_db -f C:\temp\export_plpgsql.gen.sql
    

    プロシージャごとに.prcファイルを生成し、関数ごとに.fctファイルを生成します。注:pg_procビューに他の種類の関数(proKind)を含めることができるため、スクリプトを改良する必要がある場合があります。




    1. 2つの文字列を持つFIND_IN_SET

    2. 遅い機能に基づいて年次報告書のマテリアライズドビューを作成する

    3. MySQLからSQLServerへのテキスト内の絵文字のコピー

    4. 滑らかなダイナミックグループ