mcpField
M
migrating-oracle-to-postgres-stored-procedures

migrating-oracle-to-postgres-stored-procedures

github.com/githubデータ・データベース40.5k1.8k 回インストール1 日前に更新
リポジトリ

migrating-oracle-to-postgres-stored-procedures について

Oracle PL/SQL のストアドプロシージャと関数を PostgreSQL PL/pgSQL に変換するスキルです。ソースとスキーマの確認、明示された変換制約、出力ファイルの配置を案内します。

主な機能

  1. 01Oracle のプロシージャとスキーマ定義を確認
  2. 02Oracle 構文を PostgreSQL の形式に変換
  3. 03シグネチャと指定された制御フローを維持
  4. 04照合順序と UNION ALL の動作を確認
  5. 05出力ファイルごとにプロシージャを1つ保存

活用シーン

  1. 01Oracle のストアドプロシージャを PostgreSQL に移植
  2. 02ターゲットスキーマを参照して関数を変換
  3. 03ソートと照合順序の選択を確認
  4. 04指定されたディレクトリ構成でプロシージャファイルを準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/github/awesome-copilot --skill migrating-oracle-to-postgres-stored-procedures

インストール後、Claude Code で/migrating-oracle-to-postgres-stored-proceduresを入力して読み込まれたか確認します。

詳細

Oracle から PostgreSQL へのストアドプロシージャの移行

Oracle の PL/SQL ストアドプロシージャと関数を、PostgreSQL の PL/pgSQL に相当するものへ変換します。

ワークフロー

Progress:
- [ ] Step 1: Read the Oracle source procedure
- [ ] Step 2: Translate to PostgreSQL PL/pgSQL
- [ ] Step 3: Write the migrated procedure to Postgres output directory

ステップ 1:Oracle のソースプロシージャを読み込む

.github/oracle-to-postgres-migration/DDL/Oracle/Procedures and Functions/ から Oracle のストアドプロシージャを読み込みます。型を解決するには、.github/oracle-to-postgres-migration/DDL/Oracle/Tables and Views/ にある Oracle のテーブル/ビュー定義を参照してください。

ステップ 2:PostgreSQL の PL/pgSQL に変換する

次の変換ルールを適用します。

  • Oracle 固有の構文はすべて PostgreSQL に相当する構文に変換します。
  • 元の機能と制御フローのロジックを維持します。
  • 型アンカー付きの入力パラメーター(例:PARAM_NAME IN table_name.column_name%TYPE)を維持します。
  • 他のプロシージャに渡す出力パラメーターには、明示的な型(NUMERIC、VARCHAR、INTEGER)を使用します。型アンカーは使用しないでください。
  • メソッドシグネチャは変更しないでください。
  • Oracle のソースにすでに含まれている場合を除き、オブジェクト名にスキーマ名を付けないでください。
  • 例外処理とロールバックのロジックは変更せずに維持します。
  • COMMENT または GRANT ステートメントは生成しないでください。
  • テキストの並べ替えでは、照合順序を意図的に適用します。
    • Oracle 互換のバイナリー順序が必要で、他に指定された並べ替え順序がない場合に限り、COLLATE "C" を使用します。
    • Oracle で明示的な言語依存の並べ替え(例:NLS_SORT = French)が使われていた場合は、"C" ではなく、明示的な PostgreSQL ロケール照合順序に対応付けます。
    • 対象環境の照合順序を確認するには、SELECT collname, collprovider, collcollate, collctype FROM pg_collation ORDER BY collname; を使用します。
  • UNION ALL はレビューのチェックポイントとして扱います。ブランチごとにプランの品質を検証し、ブランチを結合したことによってプランに問題が発生した場合(例:大きなテーブルで予期しないシーケンシャルスキャンが発生する場合)は、構造を見直してください。
  • 明確さや忠実度が向上する場合は、orafce 拡張機能を活用します。

ターゲットのスキーマの詳細については、.github/oracle-to-postgres-migration/DDL/Postgres/{ProjectName}/Tables and Views/ にある PostgreSQL のテーブル/ビュー定義を参照してください。

ステップ 3:移行したプロシージャを Postgres の出力ディレクトリに書き込む

移行した各プロシージャは、.github/oracle-to-postgres-migration/DDL/Postgres/{ProjectName}/Procedures and Functions/{PACKAGE_NAME_IF_APPLICABLE}/ の下に、それぞれ個別のファイルとして配置します。1 ファイルにつき 1 プロシージャとします。

{ProjectName} は、プロジェクトのアセンブリ名/フォルダー名からスペースを - に置き換えたものです(例:MyApp.DataAccess)。これはエージェントや他の移行スキルで使用されるパスと一致します。

コメント