# db-compare-tool **Repository Path**: yjmqn/db-compare-tool ## Basic Information - **Project Name**: db-compare-tool - **Description**: 多数据库对比工具 纯AI开发(qwenpaw+deepseek-v4-flash) - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-05-08 - **Last Updated**: 2026-05-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: 达梦, MySQL, Postgresql ## README # 多数据库差异比较工具 > 达梦 DM8 / MySQL / PostgreSQL / GBase 8a/8s/8c — Schema 与数据差异比较工具 ![version](https://img.shields.io/badge/version-3.0.0-blue) ![platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey) ![jdk](https://img.shields.io/badge/JDK-1.8%2B-orange) --- ## 目录 - [简介](#简介) - [截图预览](#截图预览) - [快速开始](#快速开始) - [使用说明](#使用说明) - [快捷键](#快捷键) - [常见问题](#常见问题) - [技术栈](#技术栈) --- ## 简介 一款桌面端(Electron)数据库差异比较工具。针对达梦数据库场景优化,同时支持 MySQL、PostgreSQL、GBase 全系列。 ### 核心功能一览 | 功能 | 说明 | |------|------| | 🔌 多连接管理 | 管理多个数据库连接,支持密码加密存储 | | 🌐 Schema 差异比较 | 表、列、索引、约束差异检测,异步进度反馈,支持取消 | | 📊 数据行差异对比 | 逐行对比数据,支持批量选择、分页加载 | | 🔄 同步 SQL 生成 | 自动生成差异修复 SQL,支持预览导出为 `.sql` 文件 | | 🚇 SSH 隧道 | 通过跳板机安全连接内网数据库 | | ⚙️ JDBC 驱动管理 | 可视化上传 / 删除驱动 JAR 文件,内置常见数据库驱动模板 | | 🌙 暗黑模式 | 一键切换,跟随系统 | | 📋 比较历史 | 保留历史会话,支持复现比较 | --- ## 快速开始 ### 方式一:下载安装包(推荐) 1. 从 [Releases](https://gitee.com/yjmqn/db-compare-tool/releases) 下载对应平台的安装包 2. 安装(Windows 双击 `.exe`,macOS 挂载 `.dmg` 拖入 Applications,Linux 运行 `.AppImage`) 3. 启动应用 > **前提条件**: > - 连接 MySQL/PostgreSQL/GBase 8a/8c 无需额外安装 > - 连接达梦 DM8 **或** GBase 8s 需安装 **JRE 1.8+**(终端执行 `java -version` 确认) ### 方式二:从源码构建 ```bash # 1. 安装前端依赖 npm install # 2. 编译 Java 后端(达梦/GBase8s 需要时使用) cd java && bash build.sh # Linux/macOS # 或 cd java && build.bat # Windows cd .. # 3. 启动开发服务器(Electron) npm run dev ``` --- ## 使用说明 ### 1. 新建数据库连接 | 步骤 | 操作 | |------|------| | ① | 打开首页,点击「新建连接」 | | ② | 选择数据库类型(达梦/MySQL/PostgreSQL/GBase 8s 等) | | ③ | 填写连接信息:名称、主机、端口、数据库名、用户名、密码 | | ④ | **(可选)** 展开「SSH 隧道」,配置跳板机 | | ⑤ | **(可选)** 在「设置」中调整连接超时时间 | ### 2. Schema 差异比较 1. 在首页或「差异比较」页面选择源库和目标库 2. 点击「开始 Schema 比较」 3. 实时查看比较进度(进度条 + 表统计) 4. 比较完成后: - 展开 Schema 树查看详细差异 - 使用搜索框快速定位表 - 点击「导出 SQL」生成差异修复脚本 ### 3. 数据差异比较 1. Schema 比较完成后,勾选需要对比数据的表 2. 点击「比较选中表数据」 3. 查看逐行数据差异(支持分页) 4. 勾选需要修复的行,生成同步 SQL ### 4. 导出差异 SQL 1. Schema 或数据比较完成后,点击「导出 SQL」 2. 选择同步方向(源→目标 或 目标→源) 3. 自动生成建表/改表/删表/数据同步语句 4. 可选择「预览」或直接「导出为 `.sql` 文件」 ### 5. SSH 隧道配置 在连接表单中展开「SSH 隧道」折叠面板: - **主机**:跳板机 IP/域名 - **端口**:默认 22 - **用户名**:SSH 登录用户 - **认证方式**:密码 或 密钥文件 - **本地端口**:转发到本地端口(建议自动分配) ### 6. JDBC 驱动管理 在「设置」→「JDBC 驱动管理」中: - 查看已注册的驱动列表(名称、大小、加载时间) - 点击「上传驱动」选择本地的 `.jar` 文件 - 点击「删除」移除不需要的驱动 - 点击「打开驱动目录」直接定位到驱动文件位置 - 内置常见数据库类型驱动模板 --- ## 快捷键 | 快捷键 | 功能 | |--------|------| | `Ctrl+Alt+N` | 新建连接 | | `Ctrl+Enter` | 开始比较 | | `Ctrl+Shift+E` | 导出 SQL | | `Ctrl+D` | 切换暗黑模式 | | `Ctrl+,` | 打开设置 | | `Ctrl+Shift+/` | 打开快捷键帮助 | | `F5` | 刷新连接列表 | | `Escape` | 关闭当前弹窗 | | `Ctrl+Shift+1` | 切换到首页 | | `Ctrl+Shift+2` | 切换到比较页 | | `Ctrl+Shift+3` | 切换到设置页 | --- ## 常见问题 ### Q: 连接达梦数据库失败? 1. 确认已安装 JRE 1.8+(终端执行 `java -version`) 2. 确认达梦 JDBC 驱动(`DmJdbcDriver18.jar`)已放置在驱动目录 3. 检查连接参数:主机、端口(默认 5236)、用户名/密码 4. 检查网络连通性 ### Q: 连接 MySQL/PostgreSQL 需要额外驱动吗? 不需要。MySQL 使用 `mysql2` npm 包,PostgreSQL 使用 `pg` npm 包,随客户端自动打包。 ### Q: 导出 SQL 文件失败? - 使用 Electron 的「保存文件」对话框选择保存路径 - 确保有目录写入权限 - 文件名不能包含系统非法字符 ### Q: 配置和密码存储在哪里? 配置文件存储在 Electron 用户数据目录下的 `config.json`。密码使用 AES-256-GCM 加密存储,密钥由设备标识派生。 ### Q: 如何重置所有配置? 删除用户数据目录下的 `config.json` 和 `history.json` 文件,或通过「设置」→「配置编辑器」手动编辑。 --- ## 技术栈 | 层级 | 技术 | 版本 | |------|------|------| | 桌面框架 | Electron | 33.x | | 构建工具 | electron-vite | 5.x | | 前端框架 | Vue 3 | 3.5.x | | UI 组件库 | Element Plus | 2.9.x | | 状态管理 | Pinia | 2.x | | 路由 | Vue Router 4 | 4.x | | CSS 预处理 | Sass | 1.x | | 主进程语言 | TypeScript | 5.x | | Node.js 驱动 | mysql2 / pg | 最新 | | 回退方案 | Java 8(零外部依赖) | — | ### 项目结构 ``` dm-db-comparator/ ├── electron.vite.config.ts # electron-vite 统一配置 ├── package.json ├── tsconfig.json # 根配置(引用 node + web) ├── tsconfig.node.json # main/preload 编译配置 ├── tsconfig.web.json # renderer 编译配置 │ ├── src/main/ # ─── Electron 主进程 ─── │ ├── index.ts # 主入口(窗口管理、IPC 注册、日志、SSH) │ └── server/ # TypeScript 后端(嵌入主进程) │ ├── index.ts # IPC handler 注册(db:* 和 compare:*) │ ├── adapters/ # 数据库适配器 │ ├── services/ # 业务逻辑(连接/Schema/数据/同步) │ ├── models/types.ts # 类型定义 │ └── utils/ # Java fallback + 日志工具 │ ├── src/preload/ # ─── 预加载脚本 ─── │ └── index.ts # contextBridge(暴露 IPC API) │ ├── src/renderer/ # ─── Vue 渲染进程 ─── │ ├── index.html # 入口 HTML │ ├── public/ # 静态资源 │ └── src/ │ ├── main.ts # Vue 应用入口 │ ├── App.vue # 根组件(导航 + 暗黑模式) │ ├── api/ # IPC 调用封装 │ ├── types/ # 类型定义 │ ├── router/ # 路由(hash 模式) │ ├── stores/ # Pinia 状态管理 │ ├── components/ # 可复用组件 │ ├── views/ # 页面视图 │ └── styles/ # 全局样式 + 暗黑 CSS vars │ ├── java/ # ─── Java 后端(达梦/GBase8s 回退)─── │ ├── build.sh / build.bat │ └── src/dbservice/ # JDK 1.8 源码 │ ├── out/ # electron-vite 构建输出 │ ├── main/ │ ├── preload/ │ └── renderer/ │ ├── build/ # electron-builder 配置 │ └── electron-builder.yml │ └── java/build/ # Java 构建产物(db-service.jar) ``` > 详细开发指南请参见 [DEVELOPMENT.md](./DEVELOPMENT.md)。