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. 01读取 Oracle 过程及表结构定义
  2. 02将 Oracle 语法转换为 PostgreSQL 对应写法
  3. 03保留签名和指定的控制流程
  4. 04检查排序规则及 UNION ALL 行为
  5. 05每个输出文件写入一个过程

适用场景

  1. 01将 Oracle 存储过程移植到 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),则映射到显式的 PostgreSQL 区域排序规则,而不是 "C"。
    • 使用 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}/ 下的独立文件中。每个文件一个过程。

{ProjectName} 是项目的程序集/文件夹名称,其中的空格规范化为 -(例如 MyApp.DataAccess)。这与 Agent 和其他迁移技能使用的路径一致。

评论

支持 Markdown