# godb **Repository Path**: stylesmile/godb ## Basic Information - **Project Name**: godb - **Description**: No description available - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2026-07-22 - **Last Updated**: 2026-09-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GoDB - 数据库管理工具 GoDB 是一款基于 Go + [Fyne](https://fyne.io/) 构建的轻量级跨平台数据库桌面管理工具,旨在为开发者和 DBA 提供简洁高效的多数据库统一操作界面。 ## 功能清单 ### 🔗 连接管理 - **多数据库支持**:MySQL、PostgreSQL、Kingbase(人大金仓)、Redis、MongoDB - **可视化连接管理**:树形侧边栏,支持新建、编辑、复制、删除、测试连接 - **连接着色**:每个连接自动分配唯一颜色标记,快速识别 - **配置持久化**:连接信息、窗口状态、主题偏好自动保存至 `~/.godb/`,启动自动恢复 - **跨平台**:Windows、macOS、Linux 原生体验 ### 🗄️ SQL 数据库(MySQL / PostgreSQL / Kingbase) - **对象浏览器**:数据库 → 表 / 视图 / 函数 三级树形结构,支持展开/折叠、异步加载、右键菜单 - **表/视图操作**:查看数据、查看结构、收藏表、刷新 - **函数管理**:查看函数定义(SQL 源码) - **对象搜索**:按名称/注释模糊搜索表、视图、函数,结果按类别分组排序 ### 📝 SQL 编辑与执行 - **多标签页查询窗口**:每个标签页独立连接/数据库选择器、编辑器、结果区 - **智能 SQL 编辑器**:语法高亮、关键字大写、自动补全(表/列/函数)、格式化(一键美化)、多语句批处理 - **查询执行**:单条/多条语句执行,结果实时表格展示,支持分页加载大结果集 - **结果网格**:可排序、可过滤、列统计(非空/空/去重/数值 min/max/avg/sum)、列宽自适应 - **EXPLAIN 计划可视化**:MySQL 与 PostgreSQL 风格,人类可读的执行计划行 - **查询历史**:最近 100 条自动去重、持久化、下拉快速复用 - **SQL 片段库**:具名片段保存/加载/删除,快速插入常用语句 - **批处理脚本窗口**(dbx 风格):多语句顺序执行、出错继续开关、逐步汇总表格(状态/耗时/行数/信息) ### 📊 数据编辑与导入导出 - **内联数据编辑**:双击单元格修改,自动生成 UPDATE 语句,主键感知 - **CSV 导入**:文件选择、表头识别、批量 INSERT 生成、执行前确认、成功后自动刷新 - **多格式导出**:CSV(可选 UTF-8 BOM)、JSON(对象数组)、Markdown 表格、INSERT 语句(MySQL/PG 方言)、XLSX(纯标准库实现,零依赖) - **收藏夹**:表快捷链接、保存的查询,按标题去重、持久化、侧边栏快速访问 ### 🔴 Redis 专用面板 - **键浏览器**:按 db 索引分组、Pattern 检索、键列表显示类型/TTL/大小 - **键值详情**:值预览(只读多行框)、类型、TTL、字节数 - **键操作**:删除键、设置/更新值、设置 TTL - **独立标签页**:每个 Redis 连接/数据库一个浏览器标签,互不干扰 ### 🍃 MongoDB 文档浏览器 - **数据库/集合选择器**:异步加载、层级下钻 - **文档分页浏览**:每页 50 条、上一页/下一页/刷新、总数统计 - **JSON 过滤器**:支持 MongoDB 查询语法(如 `{"age": {"$gt": 18}}`) - **文档详情**:完整 JSON 只读展示、一键复制到剪贴板 ### ⚙️ 界面与体验 - **明/暗主题切换**:一键切换,原生标题栏同步(Windows/macOS) - **键盘快捷键**:`Ctrl+Enter` 执行、 `Ctrl+N` 新建查询、 `Ctrl+W` 关闭标签、 `Ctrl+F` 结果过滤、 `↑/↓` 历史导航等 - **可拆分布局**:侧边栏宽度可拖拽、编辑器/结果区上下分割比例可调 - **状态栏**:连接状态、执行耗时、行数统计 - **原生标题栏集成**:Windows 11 Mica / macOS 明暗模式自动适配 ### 🧪 测试与质量 - **纯逻辑模块全覆盖单测**:`ddlgen`、`explainfmt`、`csvimp`、`colstats`、`objectsearch`、`rediscli`、`snippets`、`history`、`favorites`、`sqlformatter`、`batchscript`、`gridfilter`、`gridmodel`、`sqlutil`、`model`、`config`、`conncolor` - **UI 组件单测**:自动补全、结果过滤、连接表单、主题切换 - **无需真实数据库**:所有核心逻辑测试纯内存运行 --- ## 快速开始 ### 环境要求 | 依赖 | 版本 | 说明 | |---|---|---| | Go | ≥ 1.22 | 项目使用 Go Modules | | GCC (C 编译器) | MinGW-w64 或 TDM-GCC | Fyne 依赖 CGo,**必须安装** | ### 安装 C 编译器(必须) Fyne 框架依赖 CGo,编译时需要 C 编译器。**不安装将报 `build constraints exclude all Go files` 错误。** **Windows(推荐 TDM-GCC):** 1. 下载 [TDM-GCC](https://jmeubank.github.io/tdm-gcc/download/) 2. 安装时勾选 **Add to PATH** 3. 重启终端,验证:`gcc --version` **macOS:** ```bash xcode-select --install ``` **Linux (Debian/Ubuntu):** ```bash sudo apt-get install gcc libgl1-mesa-dev libgtk-3-dev ``` ### 克隆 & 运行 ```bash git clone https://github.com/godb/godb.git cd godb go mod tidy ``` ```bash # Windows $env:CGO_ENABLED = "1" go run ./cmd/godb # macOS / Linux CGO_ENABLED=1 go run ./cmd/godb ``` ### 编译为可执行文件 ```bash # Windows $env:CGO_ENABLED = "1" go build -o godb.exe ./cmd/godb # macOS / Linux CGO_ENABLED=1 go build -o godb ./cmd/godb ``` --- ## 支持的数据库 | 数据库 | 驱动 | 默认端口 | |---|---|---| | MySQL | `go-sql-driver/mysql` | 3306 | | PostgreSQL | `lib/pq` | 5432 | | Kingbase(人大金仓) | `lib/pq`(兼容 PG 协议) | 54321 | | Redis | `go-redis/v9` | 6379 | | MongoDB | `mongo-driver` | 27017 | --- ## 项目结构 ``` godb/ ├── cmd/godb/main.go # 程序入口 ├── internal/ │ ├── config/config.go # 配置管理(连接持久化、窗口状态、主题、历史/片段/收藏路径) │ ├── database/ # 各数据库驱动实现 │ │ ├── mysql.go │ │ ├── mysql_views.go # MySQL 视图/函数支持 │ │ ├── postgresql.go │ │ ├── redis.go │ │ ├── mongodb.go │ │ ├── kingbase.go │ │ └── types.go # 接口定义 + 工厂函数 │ ├── model/model.go # 数据模型定义 │ ├── ui/ # Fyne GUI 界面(主窗口、侧边栏、查询标签、Redis/MongoDB 面板等) │ ├── ddlgen/ # CREATE TABLE DDL 生成(MySQL/PG/Kingbase 方言) │ ├── explainfmt/ # EXPLAIN 计划格式化(MySQL/PG) │ ├── export/ # 导出:CSV/JSON/Markdown/INSERT/XLSX │ ├── csvimp/ # CSV 导入解析与 INSERT 生成 │ ├── colstats/ # 列统计(非空/空/去重/数值 min/max/avg/sum) │ ├── objectsearch/ # 对象搜索(表/视图/函数,按名/注释模糊匹配) │ ├── favorites/ # 收藏夹(表链接/保存查询,持久化) │ ├── history/ # 查询历史(FIFO、去重、持久化) │ ├── snippets/ # SQL 片段库(具名、FIFO、持久化) │ ├── sqlformatter/ # SQL 格式化(关键字大写、子句换行、VALUES 缩进) │ ├── batchscript/ # 批处理脚本解析与执行汇总 │ ├── gridmodel/ # 结果网格数据模型 │ ├── gridfilter/ # 结果网格过滤逻辑 │ ├── mongodoc/ # MongoDB 文档查询封装 │ ├── rediscli/ # Redis 命令行解析与结果格式化 │ ├── sqlutil/ # SQL 工具(方言、标识符引用、DML 解析、注释切换) │ ├── conncolor/ # 连接颜色分配 │ └── autocomplete/ # SQL 智能补全(表/列/函数/关键字) ├── test/ # 外部包单元测试(与 internal 对应) ├── docs/ # 文档 ├── go.mod └── go.sum ``` --- ## 运行测试 ```bash # 全部测试(不需要真实数据库连接) go test ./internal/... ./test/... -v -count=1 # 单独运行某模块测试 go test ./internal/database/... -v -count=1 go test ./test/internal/config/... -v -count=1 go test ./internal/sqlformatter/... -v -count=1 ``` --- ## 常见问题 ### 启动报错 `build constraints exclude all Go files` 没有安装 C 编译器(gcc),CGo 无法工作。按上面的步骤安装 TDM-GCC 或 MinGW-w64。 ### `go build` 报错 `cgo: exec gcc: missing or not executable` gcc 未安装或不在 PATH 中。重启终端让 PATH 生效,或手动检查 `where gcc`。 ### Linux 下报错缺少 OpenGL 库 ```bash sudo apt-get install libgl1-mesa-dev xorg-dev ``` --- ## License MIT