开源、可自定义的PL/SQL转GaussDB工具 专为国产化改造设计转换工具
一款专为国产化改造设计的开源PL/SQL转换工具,旨在解决Oracle到GaussDB迁移过程中的核心痛点:
解决的核心问题[td]问题 | 传统方案痛点 | 我们的解决方案 | 语法兼容性 | 原厂工具转换后仍需手动修改 | ✅ 内置50+转换规则,结合自定义转换规则,代码转换把控在自己手中 | 规则定制 | 无法自定义转换规则 | ✅ 灵活配置系统,支持自定义规则 | 版本同步 | 源端更新需重复转换和手动修改 | ✅ 自定义规则可覆盖原厂工具的缺陷,使转换后不再需要人工修改成为可能 | 响应速度 | 新语法支持需等待数月 | ✅ 开源架构,可快速扩展新规则 | 可被集成 | 无法集成到用户自己的平台中 | ✅ 可以用命令行方式或api方式集成 | 核心优势- 高度可定制:支持语法节点级和正则表达式级自定义规则
- 高性能:支持多线程批量处理,大幅提升转换效率
- 精准转换:基于ANTLR4语法分析,确保转换准确性
- 持续更新:开源架构,支持快速响应新需求
- 可视化界面:提供完整的Web管理界面
功能特性核心转换能力语法转换- 数据类型映射:PLS_INTEGER → INTEGER、CHAR → VARCHAR2
- 函数替换:SYS_CONTEXT → pg_current_sessid() 等
- 关键字处理:自动添加AS关键字避免冲突
- 异常处理:RAISE_APPLICATION_ERROR → REPORT_APPLICATION_ERROR
高级功能- 动态SQL处理:支持EXECUTE IMMEDIATE动态SQL转换
- 游标优化:自动移除不必要的SELECT INTO
- 性能优化:TABLE()函数优化、连接条件优化
- 字符集处理:支持全角/半角字符自动转换
配置系统- 映射文件:支持数据类型、函数、异常等映射配置
- 正则规则:支持自定义正则表达式替换
- 查询块替换:支持基于哈希值的整段SQL替换
- 参数模板:支持批量参数配置
技术架构
- ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
- │ 前端界面 │ │ 后端服务 │ │ 转换核心 │
- │ (Vue.js) │◄──►│ (Spring Boot) │◄──►│ (ANTLR4) │
- │ │ │ │ │ │
- │ • 项目管理 │ │ • REST API │ │ • 语法解析 │
- │ • SQL转换 │ │ • 用户认证 │ │ • 规则转换 │
- │ • 批量处理 │ │ • 文件管理 │ │ • 配置管理 │
- └─────────────────┘ └─────────────────┘ └─────────────────┘
复制代码 系统架构模块组成
- /
- ├── src/ # 转换核心模块
- │ ├── main/java/ # 核心转换逻辑
- │ ├── test/ # 单元测试
- │ └── resources/ # ANTLR4语法文件
- ├── webapp/ # 后端服务模块
- │ ├── controller/ # REST API控制器
- │ ├── service/ # 业务逻辑服务
- │ └── model/ # 数据模型
- ├── frontend/ # 前端界面模块
- │ ├── src/ # Vue.js源码
- │ └── public/ # 静态资源
- └── config/ # 配置文件目录
- ├── *.properties # 各种映射配置
- └── *.yaml # 高级规则配置
复制代码 技术栈[td]模块 | 技术栈 | 版本 | 转换核心 | Java + ANTLR4 | Java 8+, ANTLR4 4.13.2 | 后端服务 | Spring Boot | 3.2.5 | 前端界面 | Vue.js + Element Plus | Vue 3.5.17 | 数据库 | SQLite | 3.45.1.0 | 快速开始环境要求- Java: JDK 17+ (推荐JDK 17)
- Node.js: 16+ (仅前端开发需要)
- Maven: 3.6+ (可选,转换核心支持离线构建)
项目管理- 创建项目:设置项目名称和描述
- 上传文件:支持单个或批量上传SQL文件
- 执行转换:一键转换所有文件,可在线对比差异
- 在线转换:粘贴SQL直接转换
转换配置- 基础配置:数据类型映射、函数替换等
- 高级配置:正则表达式规则、查询块替换等
开发指南环境搭建- # 1. 构建转换核心
- mvn clean package
- # 2. 构建后端服务
- cd webapp
- mvn clean package
- # 3. 构建前端界面
- cd frontend
- npm install
- npm run build
复制代码
测试框架
- # 运行所有测试
- mvn test
- # 运行特定测试
- mvn test -Dtest=PlSqlRewriterTest#testBasicConversion
- # 手动测试
- ./convert.sh test.sql output.sql
- ./compare.sh output.sql expected.sql
复制代码 常见问题
Q: 转换后的SQL仍有语法错误怎么办?A: 检查配置文件中是否有遗漏的映射规则,或使用正则表达式规则进行兜底处理。 Q: 如何添加新的数据类型映射?A: 在 config/datatype_mapping.properties 文件中添加映射关系,格式为 源类型=目标类型。 Q: 批量转换时内存不足怎么办?A: 减少并发数量,或分批处理文件。 Q: 如何自定义函数替换规则?A: 根据场景,使用token_mapping.properties或atom_mapping.properties或general_element_mapping.properties或patterns.yaml。 Q: 转换性能如何优化?A: 使用批量转换模式,合理设置并发数,避免处理过大的单个文件。
开源、可自定义的PL/SQL转GaussDB工具 专为国产化改造设计转换工具
开源、可自定义的PL/SQL转GaussDB工具 专为国产化改造设计转换工具
开源、可自定义的PL/SQL转GaussDB工具 专为国产化改造设计转换工具
开源、可自定义的PL/SQL转GaussDB工具 专为国产化改造设计转换工具
开源、可自定义的PL/SQL转GaussDB工具 专为国产化改造设计转换工具
开源、可自定义的PL/SQL转GaussDB工具 专为国产化改造设计转换工具
开源、可自定义的PL/SQL转GaussDB工具 专为国产化改造设计转换工具
开源、可自定义的PL/SQL转GaussDB工具 专为国产化改造设计转换工具

链接: https://pan.baidu.com/s/1FoKZyywjOFOFRT4-M7R2bg
提取码下载:
|