# db-comparison **Repository Path**: git.nimabi.com/db-comparison ## Basic Information - **Project Name**: db-comparison - **Description**: 数据库对比工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-13 - **Last Updated**: 2026-08-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 达梦 8 数据库结构对比系统 V1 > 支持 达梦 8 表/字段/索引/约束四类对象双向差异分析与 SQL 生成的可视化工具 ## 快速开始 ### 环境要求 - JDK 17+ - Node.js 18+ - Maven 3.8+ - MySQL 5.7+ / 8.0+(系统库:连接配置存储) - 达梦 8 实例(业务库:被对比的源库与目标库) ### 1. 初始化数据库 > 系统库(MySQL)与业务库(达梦 8)分别用不同客户端初始化。 ```bash # 系统库(MySQL:连接配置存储) mysql -u root -p < db-compare-backend/web-api/src/test/resources/sql/init-system.sql # 测试源库(达梦 8:5 张表四类对象) disql SYSDBA/SYSDBA001@localhost:5236 `db-compare-backend/src/test/resources/sql/init-source.sql` # 测试目标库(达梦 8:含差异,覆盖 ADDED/REMOVED/MODIFIED) disql SYSDBA/SYSDBA001@localhost:5236 `db-compare-backend/src/test/resources/sql/init-target.sql` ``` ### 2. 配置环境变量 ```bash # 凭证 AES-GCM 加密密钥(Base64 编码 32 字节,演示环境可用默认值) export DB_COMPARE_AES_KEY=default-aes-key-change-me # 系统库连接信息(MySQL) export DB_COMPARE_SYS_HOST=localhost export DB_COMPARE_SYS_PORT=3306 export DB_COMPARE_SYS_USER=root export DB_COMPARE_SYS_PASS=root ``` ### 3. 放置达梦 JDBC 驱动 将达梦官方 `DmJdbcDriver18-8.1.3.140.jar` 放到: ``` db-compare-backend/dameng-adapter/lib/DmJdbcDriver18-8.1.3.140.jar ``` (替换占位 jar) ### 4. 启动后端 ```bash cd db-compare-backend mvn clean install -DskipTests mvn spring-boot:run -pl web-api ``` 后端启动在 http://localhost:8080 ### 5. 启动前端 ```bash cd db-compare-frontend npm install npm run dev ``` 前端启动在 http://localhost:5173 ### 6. 演示主链路 1. 打开 http://localhost:5173 → 连接配置页 2. 新增两个连接:源库(schema=TEST_SOURCE)+ 目标库(schema=TEST_TARGET) 3. 进入对比任务页 → 选择源库和目标库 → 点击"开始对比" 4. 差异概览页 → 查看统计卡片与差异列表 5. 点击"详情" → 左右并排查看字段差异 6. SQL 预览页 → 选择基准边 → 生成 SQL → 导出 ## 功能列表(V1) - 达梦 8 表/字段/索引/约束四类对象元数据提取 - 差异计算(ADDED/REMOVED/MODIFIED) - 双向 SQL 生成(按依赖顺序) - 5 个可视化页面 - HTML/SQL/JSON 三种导出 - AES-256 凭证加密存储 ## 项目结构 ``` db-comparison/ ├── db-compare-backend/ # 后端 Maven 多模块(6 个子模块) │ ├── core-spi/ # SPI 接口与数据模型 │ ├── core-service/ # 业务服务层 │ ├── dameng-adapter/ # 达梦 8 适配实现 │ ├── storage-dameng/ # 连接配置存储 │ ├── exporter-common/ # 导出器实现 │ └── web-api/ # REST 接口与启动类 ├── db-compare-frontend/ # Vue 3 前端 └── docs/ # 工程文档 ``` ## 技术栈 - 后端:JDK 17 + Spring Boot 3.5.0 + Maven 多模块 + HikariCP + DmJdbcDriver18 8.1.3.140 + Freemarker 2.3.33 + Jackson - 前端:Vue 3 + Element Plus + Pinia + Vue Router + Axios + CodeMirror 6 ## 测试 ```bash # 后端单元测试 + 集成测试 cd db-compare-backend && mvn test # 前端构建 cd db-compare-frontend && npm run build ``` ## 错误码 | 错误码 | 含义 | |---|---| | CONN-1001 | 源库连接失败 | | CONN-1002 | 目标库连接失败 | | CONN-1003 | 凭证错误 | | COMPARE-5001 | 元数据提取超时 | | COMPARE-5002 | 元数据量超限(>2000 表) | | SQLGEN-5001 | 模板渲染失败 | | EXPORT-1001 | 不支持的导出格式 | ## V1 范围边界 **V1 必做**:四类对象对比、双向 SQL 生成、5 个页面、3 种导出、AES 加密、异常处理 **V1 不做**:CLI、异步任务、任务历史、多数据库、视图/存储过程对比、SQL 执行入口、用户角色权限 ## 后续版本 - V2:CLI + 异步任务 + 任务历史 + Spring Security 权限 - V3:多数据库(MySQL/Oracle)+ 视图/存储过程对比 + SQL 执行入口(含回滚) ## 文档 - 需求文档:`docs/01-requirements.md` - 工程 Spec:`docs/02-engineering-spec.md` - 设计文档:`docs/03-design.md` - 开发规范:`docs/04-dev_standard.md` - 实施计划:`docs/plans/2026-08-11-dm8-db-compare-plan.md` - 项目规则:`.trae/rules/project_rule.md`