一款基于 Wails 框架开发的跨平台数据库管理工具,提供类似 Navicat 的功能体验。
-
连接管理
- 支持 MySQL、PostgreSQL、SQLite 数据库连接
- 创建、测试、删除数据库连接(删除前确认提示)
- 导入 Navicat 连接:侧栏「导入 Navicat」可选择 .ncx 文件,自动解析并创建 MySQL/SQLite 连接(密码需后续编辑填写)
- 连接状态实时显示
- 连接树形结构展示(连接 -> 数据库 -> 表)
- 连接右键:编辑、刷新、立即备份 / 从备份恢复、打开监控、删除
-
SQL 查询编辑器
- Monaco Editor 集成,提供专业的代码编辑体验
- SQL 语法高亮和自动补全
- Ctrl+Enter 快速执行查询
- SQL 格式化功能
- 查询结果实时展示
- 查询历史记录(自动保存、搜索、快速选择)
- 表名右键「查询」打开 SQL 查询窗口并预填该表查询语句
- 查询窗口展示当前库/表标签(库 main / 表 xxx)
- SQL 区域与结果区域比例可拖拽调节,默认 SQL 1/3、结果 2/3
- 切换标签后返回查询窗口时,自动恢复该标签的 SQL 与查询结果
- 查询执行超时(2 分钟)与错误提示,避免一直「运行中」
- 执行计划(MySQL / PostgreSQL):工具栏「执行计划」按钮,可视化 EXPLAIN 结果(全表扫描/索引使用、优化建议)
-
数据查看与编辑
- 高性能数据网格(基于 vxe-table)
- 虚拟滚动,支持大数据集(10w+ 数据不卡顿)
- 单元格双击编辑
- 修改跟踪和批量保存
- 单元格编辑后黄色背景标记
- 表头筛选功能(包含、等于、不为空、为空等)
- 数据导出功能(CSV、JSON、SQL Insert)
- 数据导入功能(CSV、JSON,支持预览和列映射)
- 表数据查看器(DataViewer),支持分页加载
-
多标签页管理
- 支持多个查询标签页
- 支持表数据查看标签页
- 标签页切换和关闭
- 标签页拖拽排序
-
实时监控(MySQL)
- 连接右键「打开监控」打开实时监控弹窗
- 每 5 秒刷新:活跃连接数、进程列表(SHOW FULL PROCESSLIST)
- 慢查询高亮(执行时间 ≥ 5 秒)
-
备份与恢复(MySQL / PostgreSQL / SQLite)
- 立即备份:连接右键「立即备份」,选择保存路径,调用 mysqldump / pg_dump / sqlite3 .dump 生成 SQL 备份文件
- 从备份恢复:连接右键「从备份恢复」,从最近备份列表选择或「选择文件」,二次确认后执行恢复
- 定时备份:侧栏「备份管理」→ 定时备份,可配置每日/每周、执行时间与输出目录,后台按周期自动执行
- 备份管理:备份列表查看、验证(文件存在与大小)、删除;最近 50 次备份记录保存于用户配置目录
-
日志
- 分级日志(DEBUG / INFO / WARN / ERROR)写入
用户配置目录/topology/logs/topology.log - 通过环境变量
TOPOLOGY_LOG_LEVEL配置最低级别(默认 INFO)
- 分级日志(DEBUG / INFO / WARN / ERROR)写入
-
用户界面
- 亮色 / 暗色主题切换(标题栏主题按钮,偏好持久化)
- 可拖拽调整的侧边栏
- 自定义标题栏(支持窗口拖拽)
- 窗口控制:最小化、最大化/还原、关闭
- 状态栏显示连接信息、查询统计和编辑器位置(行号、列号)
- 多语言支持(中文、英文),支持语言切换
- 快捷键系统完善(更多快捷键支持)
- PostgreSQL 执行计划、特色类型等增强(基础连接与查询已支持)
- 表结构可视化编辑(编辑现有表结构)
- 框架: Vue 3 (Composition API)
- 语言: TypeScript
- UI 组件库:
- Naive UI - 基础组件
- vxe-table - 高性能数据表格
- Monaco Editor - 代码编辑器
- Lucide Vue Next - 图标库
- 样式: Tailwind CSS
- 构建工具: Vite
- 语言: Go 1.23.1
- 框架: Wails v2
- 架构: 前后端分离,后端提供真实数据接口(连接、查询、表数据、导入导出、执行计划、实时监控等)
topology/
├── app.go # 后端接口实现(mock 数据)
├── main.go # Wails 应用入口
├── frontend/
│ ├── src/
│ │ ├── components/ # Vue 组件
│ │ │ ├── TitleBar.vue # 自定义标题栏
│ │ │ ├── Sidebar.vue # 侧边栏
│ │ │ ├── ConnectionTree.vue # 连接树
│ │ │ ├── TabBar.vue # 标签页
│ │ │ ├── StatusBar.vue # 状态栏
│ │ │ ├── DataGrid.vue # 数据网格
│ │ │ ├── ExecutionPlanViewer.vue # 执行计划可视化
│ │ │ └── LiveMonitor.vue # 实时监控弹窗
│ │ ├── views/ # 页面视图
│ │ │ ├── MainLayout.vue # 主布局
│ │ │ ├── ConnectionManager.vue # 连接管理器
│ │ │ ├── QueryConsole.vue # SQL 控制台
│ │ │ └── DataViewer.vue # 表数据查看器
│ │ ├── services/ # 服务层
│ │ │ ├── connectionService.ts
│ │ │ ├── queryService.ts
│ │ │ ├── dataService.ts
│ │ │ └── monitorService.ts # 实时监控
│ │ ├── composables/ # 组合式函数
│ │ │ ├── useMonaco.ts
│ │ │ ├── useTheme.ts # 亮/暗主题切换与持久化
│ │ │ └── useSchemaMetadata.ts
│ │ ├── types/ # TypeScript 类型定义
│ │ │ └── index.ts
│ │ ├── App.vue # 根组件
│ │ ├── main.ts # 入口文件
│ │ └── style.css # 全局样式
│ ├── tailwind.config.js
│ ├── postcss.config.js
│ └── package.json
├── docs/ # 文档目录
│ └── development-plan.md # 开发计划
└── README.md
- Go 1.23.1 或更高版本
- Node.js 18+ 和 npm
- Wails CLI (安装方法见下方)
go install github.com/wailsapp/wails/v2/cmd/wails@latest# 安装前端依赖
cd frontend
npm install
# 返回项目根目录
cd ..启动开发服务器(支持热重载):
wails dev开发服务器会在以下地址运行:
- 桌面应用窗口(主要开发方式)
- 浏览器访问:http://localhost:34115(用于调试)
构建生产版本:
# 标准构建
wails build
# 清理构建(推荐)
wails build -clean构建产物位于 build/bin/ 目录。
多平台分别使用对应配置文件发布,校验和文件名含平台信息(如 topology_1.3.0_Ubuntu22.04_checksums.txt):
# 检查配置
goreleaser check -f .goreleaser.macos.yml
goreleaser check -f .goreleaser.ubuntu22.04.yml
goreleaser check -f .goreleaser.ubuntu24.04.yml
goreleaser check -f .goreleaser.windows.yml
# 发布(需先设置 GITHUB_TOKEN 并打 tag)
goreleaser release -f .goreleaser.macos.yml --clean
goreleaser release -f .goreleaser.ubuntu22.04.yml --clean
goreleaser release -f .goreleaser.ubuntu24.04.yml --clean
goreleaser release -f .goreleaser.windows.yml --clean详见 release.md。
如果需要单独构建前端:
cd frontend
npm run build- 点击侧边栏的「新建连接」按钮;或点击「导入 Navicat」选择 .ncx 文件批量导入(仅 MySQL/SQLite,密码需后续编辑)
- 选择数据库类型(MySQL 或 SQLite,PostgreSQL 支持开发中)
- 填写连接信息(主机、端口、用户名、密码等)
- 点击「测试连接」测试连接
- 点击「连接」创建连接
- 在连接树中选择一个连接,系统会自动创建/聚焦该连接的查询标签页;或对表名右键 →「查询」,打开查询窗口并预填该表的
SELECT * FROM … LIMIT 100。 - 在 SQL 编辑器中编写或修改 SQL 语句(当前库/表会显示在「执行」按钮左侧)。
- 按
Ctrl+Enter或点击「执行」按钮执行查询。 - 查询结果在下方数据网格中显示;可拖拽中间的横条调整 SQL 区与结果区的比例(默认 1:2)。
- 切换到其他标签再切回时,该查询标签的 SQL 与查询结果会自动恢复。
- 在连接树中展开连接和数据库
- 双击表名
- 系统会创建一个表数据标签页,自动加载表数据
- 支持分页浏览(Load More、Previous、Next)
- 可以在数据网格中编辑、筛选和导出数据
- 在数据网格中双击单元格进入编辑模式
- 修改数据后,单元格会显示黄色背景标记
- 系统会跟踪所有变更,显示待保存的变更数量
- 点击 "Save Changes" 批量保存所有修改
- 点击表头的筛选图标
- 选择筛选条件(包含、等于、不为空、为空等)
- 输入筛选值
- 数据网格会自动应用筛选条件
- 在数据网格顶部点击 "Export" 按钮
- 选择导出格式:
- CSV:逗号分隔值格式
- JSON:JSON 格式
- SQL Insert:SQL INSERT 语句
- 导出文件会保存到
build/export/目录
- 主题: 支持亮色与暗色主题,标题栏提供主题切换按钮,偏好保存在本地。
- 主色调:
#1677ff(科技蓝) - 字体:
- 代码: JetBrains Mono, Fira Code
- UI: 系统默认字体
- 项目初始化和依赖安装
- 类型定义和接口设计
- 所有核心组件实现
- 所有页面视图实现(包括 DataViewer 表数据查看器)
- 服务层和组合式函数
- 前后端集成
- 构建验证
- 表数据视图完整实现(分页加载、数据编辑、筛选、导出)
- 数据导出功能(CSV、JSON)
- 标签页拖拽排序
- 状态栏编辑器位置显示
- 单元格编辑后视觉标记
- 表头筛选功能
- SQL Insert 导出格式实现
- 连接持久化存储(文件存储 + AES-256 密码加密)
- 查询历史记录功能(自动保存、搜索、快速选择)
- 数据导入功能(CSV/JSON 导入、预览、列映射、批量插入)
- 表结构设计器(可视化设计、生成 CREATE TABLE 语句)
- SQL 分析功能(性能评估、优化建议、警告提示)
- 多语言支持(国际化)- 支持中文和英文,语言切换功能
- 表名右键「查询」打开 SQL 查询窗口并预填该表 SQL
- 查询窗口当前库/表展示、SQL/结果区可拖拽比例(默认 1/3、2/3)
- 切换标签后恢复查询窗口的 SQL 与查询结果
- 查询执行超时与错误提示(避免一直运行中)
- 亮色/暗色主题切换与持久化
- 标题栏最大化/还原按钮
- 执行计划可视化(MySQL / PostgreSQL EXPLAIN,流程图展示、全表扫描/索引标注)
- 实时监控(MySQL:活跃连接数、进程列表、慢查询高亮,Wails 事件推送)
- 导入 Navicat 连接文件(.ncx,自动创建 MySQL/SQLite 连接)
- 删除连接前确认(是/否)
-
SQL Insert 导出格式实现 ✅
- 实现 SQL INSERT 语句格式导出
- 支持批量 INSERT 语句生成
- 处理特殊字符转义
-
连接持久化存储 ✅
- 连接信息保存到本地文件(JSON格式,存储在用户配置目录)
- 应用启动时自动加载已保存的连接
- 连接密码 AES-256 加密存储
- 查询历史记录 ✅
- 保存最近执行的 SQL 查询(自动保存,最多保留 100 条)
- 历史记录列表展示(侧边栏面板)
- 快速选择历史查询重新执行(点击历史记录自动填充到编辑器)
- 历史记录搜索功能(支持按 SQL 内容搜索)
- 按连接 ID 筛选历史记录
- 显示查询执行时间、行数、成功/失败状态
- 清除历史记录功能
- 数据导入功能 ✅
- 支持 CSV 文件导入
- 支持 JSON 文件导入
- 导入数据预览和映射(前 10 行预览)
- 列映射功能(文件列 -> 表列)
- 批量插入数据(每批 100 条)
- 导入结果反馈
-
表结构设计器 ✅
- 可视化表结构编辑
- 字段类型选择(支持常见数据类型)
- 索引和外键管理
- 生成 CREATE TABLE 语句
- 支持主键、唯一约束、NULL 约束
- 外键级联操作配置
-
SQL 分析功能 ✅
- SQL 查询类型识别(SELECT/INSERT/UPDATE/DELETE)
- 性能评估(复杂度分析)
- 优化建议生成(常见问题检测)
- 警告提示(如缺少 WHERE 条件、SELECT * 等)
- 索引使用建议
- 用户指南:快速入门、连接配置、查询与执行计划、备份恢复、常见问题
- 开发者文档:架构概览、本地构建与运行、目录说明、贡献指南
- 第一阶段总结:完成项、已知限制、下一阶段优先级
- 开发与迭代计划:docs/development-plan.md、docs/iteration-plan.md
欢迎提交 Issue 和 Pull Request!
GNU General Public License v3.0 (GPLv3)
如果你觉得 Topology 软件对你有帮助,欢迎请作者喝一杯咖啡 ☕
最后更新: 2026-01-25
所有静态资源(字体、JS、CSS等)已完全本地化,不再依赖外部 CDN:
- ✅ Monaco Editor: 使用
vite-plugin-monaco-editor插件,所有 worker 文件打包到本地 - ✅ 字体: 使用系统字体,无需外部 CDN
- ✅ 依赖库: 所有依赖通过 npm 安装,构建时打包到本地
优势:
- 完全离线可用
- 更快的加载速度
- 更高的稳定性
- 更好的安全性
详细说明请参考: CDN_LOCALIZATION.md
Topology 现已支持多语言界面:
- 中文(简体) - 默认语言
- English - 完整英文界面
点击标题栏右侧的地球图标 🌐 即可切换语言。语言偏好会自动保存,下次启动应用时会记住您的选择。
- ✅ 连接管理界面
- ✅ SQL 查询编辑器
- ✅ 数据网格和表格
- ✅ 查询历史记录
- ✅ 数据导入/导出
- ✅ 表结构设计器
- ✅ SQL 分析功能
- ✅ 执行计划、实时监控、Navicat 导入
- ✅ 状态栏和提示信息
- ✅ 执行计划:MySQL / PostgreSQL 下可查看 SELECT 的 EXPLAIN 结果,流程图展示节点类型、全表扫描/索引使用、优化建议
- ✅ 实时监控:连接右键「打开监控」,弹窗展示活跃连接数与进程列表,每 5 秒刷新,慢查询高亮
- ✅ 导入 Navicat 连接:侧栏「导入 Navicat」选择 .ncx 文件,解析并自动创建 MySQL/SQLite 连接(密码为空需后续编辑)
- ✅ 删除连接:删除前弹出确认「是否确认删除连接「xxx」?」选是/否
- ✅ 发布:GoReleaser 校验和文件名含平台(如
topology_1.3.0_Ubuntu22.04_checksums.txt),详见 release.md
- ✅ 查询窗口增强
- 表名右键「查询」改为打开 SQL 查询窗口并预填该表查询(不再打开表数据视图)
- 查询工具栏展示当前库/表(如「库 main / 表 realm」)
- SQL 区与结果区比例可拖拽调节,默认 SQL 1/3、结果 2/3,比例持久化到本地
- 切换标签后返回查询窗口时,自动恢复该标签的 SQL 与查询结果
- 查询执行增加 2 分钟超时与错误结果展示,避免一直显示「运行中」
- ✅ 界面与窗口
- 标题栏新增最大化/还原按钮(根据状态切换图标)
- 亮色/暗色主题切换(标题栏太阳/月亮按钮,偏好持久化)
- 移除查询工具栏右侧无效的 Dialect/Schema 固定文案
- 查询结果区域默认占一半高度(与 SQL 区 50:50,可拖拽调整)
- ✅ 完成多语言文案:窗口(最大化/还原)、主题(亮色/暗色)
- ✅ 完成 SQL Insert 导出格式实现
- ✅ 完成连接持久化存储功能
- 连接信息自动保存到用户配置目录(
~/.config/topology/connections.json) - 应用启动时自动加载已保存的连接
- 密码使用 AES-256 加密存储
- 连接信息自动保存到用户配置目录(
- ✅ 完成查询历史记录功能
- 自动保存最近执行的 SQL 查询(最多 100 条)
- 历史记录存储在
~/.config/topology/query_history.json - 侧边栏历史面板,支持搜索和快速选择
- 显示查询执行时间、行数、成功/失败状态
- 支持按连接 ID 筛选历史记录
- ✅ 完成数据导入功能
- 支持 CSV 和 JSON 文件导入
- 数据预览功能(显示前 10 行)
- 列映射功能(文件列映射到表列)
- 批量插入(每批 100 条记录)
- 导入结果反馈(成功/失败、插入行数)
- ✅ 完成表结构设计器
- 可视化表结构编辑界面
- 支持添加/删除列、索引、外键
- 字段类型选择(常见数据类型)
- 主键、唯一约束、NULL 约束配置
- 外键级联操作配置(RESTRICT/CASCADE/SET NULL)
- 自动生成 CREATE TABLE 和 CREATE INDEX 语句
- ✅ 完成 SQL 分析功能执行计划、实时监控、Navicat
- SQL 查询类型自动识别
- 性能复杂度评估(low/medium/high)
- 常见问题检测和警告(如缺少 WHERE、SELECT * 等)
- 优化建议生成(索引使用、查询优化等)
- ✅ 完成多语言支持(国际化)
- 支持中文(zh-CN)和英文(en-US)
- 语言切换功能(标题栏语言切换器)
- 自动检测浏览器语言
- 语言偏好保存到本地存储
- 所有界面文本已国际化