DaMeng now uses JDBC agent instead of ODBC. Remove odbc-api crate, ODBC_ENV static, unixodbc system dependency from CI, and ODBC library bundling from macOS release builds. macOS no longer needs any brew dependencies for development.
240 lines
12 KiB
Markdown
240 lines
12 KiB
Markdown
<div align="center">
|
||
<img src="docs/logo.png" width="80" />
|
||
<h1>DBX</h1>
|
||
<p>15 MB 驾驭 25+ 种数据库。桌面端 & Docker 自托管,内置 AI 助手。</p>
|
||
<p>
|
||
<a href="https://github.com/t8y2/dbx/releases"><img src="https://img.shields.io/github/downloads/t8y2/dbx/total?style=for-the-badge&color=blue" /></a>
|
||
<a href="https://github.com/t8y2/dbx/graphs/contributors"><img src="https://img.shields.io/github/contributors/t8y2/dbx?style=for-the-badge" /></a>
|
||
<a href="https://discord.gg/W7NyVDRt6a"><img src="https://dcbadge.limes.pink/api/server/W7NyVDRt6a" alt="加入 Discord" /></a>
|
||
<a href="https://qm.qq.com/cgi-bin/qm/qr?k=&group_code=1087880322"><img src="https://img.shields.io/badge/QQ_群-1087880322-EB1923?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iODYiIHdpZHRoPSI4NiIgdmlld0JveD0iMCAwIDEyMCAxNDUiPjxwYXRoIGZpbGw9IiNmYWFiMDciIGQ9Ik02MC41MDMgMTQyLjIzN2MtMTIuNTMzIDAtMjQuMDM4LTQuMTk1LTMxLjQ0NS0xMC40Ni0zLjc2MiAxLjEyNC04LjU3NCAyLjkzMi0xMS42MSA1LjE3NS0yLjYgMS45MTgtMi4yNzUgMy44NzQtMS44MDcgNC42NjMgMi4wNTYgMy40NyAzNS4yNzMgMi4yMTYgNDQuODYyIDEuMTM2em0wIDBjMTIuNTM1IDAgMjQuMDM5LTQuMTk1IDMxLjQ0Ny0xMC40NiAzLjc2IDEuMTI0IDguNTczIDIuOTMyIDExLjYxIDUuMTc1IDIuNTk4IDEuOTE4IDIuMjc0IDMuODc0IDEuODA1IDQuNjYzLTIuMDU2IDMuNDctMzUuMjcyIDIuMjE2LTQ0Ljg2MiAxLjEzNnptMCAwIi8+PHBhdGggZD0iTTYwLjU3NiA2Ny4xMTljMjAuNjk4LS4xNCAzNy4yODYtNC4xNDcgNDIuOTA3LTUuNjgzIDEuMzQtLjM2NyAyLjA1Ni0xLjAyNCAyLjA1Ni0xLjAyNC4wMDUtLjE4OS4wODUtMy4zNy4wODUtNS4wMUMxMDUuNjI0IDI3Ljc2OCA5Mi41OC4wMDEgNjAuNSAwIDI4LjQyLjAwMSAxNS4zNzUgMjcuNzY5IDE1LjM3NSA1NS40MDFjMCAxLjY0Mi4wOCA0LjgyMi4wODYgNS4wMSAwIDAgLjU4My42MTUgMS42NS45MTMgNS4xOSAxLjQ0NCAyMi4wOSA1LjY1IDQzLjMxMiA1Ljc5NXptNTYuMjQ1IDIzLjAyYy0xLjI4My00LjEyOS0zLjAzNC04Ljk0NC00LjgwOC0xMy41NjggMCAwLTEuMDItLjEyNi0xLjUzNy4wMjMtMTUuOTEzIDQuNjIzLTM1LjIwMiA3LjU3LTQ5LjkgNy4zOTJoLS4xNTNjLTE0LjYxNi4xNzUtMzMuNzc0LTIuNzM3LTQ5LjYzNC03LjMxNS0uNjA2LS4xNzUtMS44MDItLjEtMS44MDItLjEtMS43NzQgNC42MjQtMy41MjUgOS40NC00LjgwOCAxMy41NjgtNi4xMTkgMTkuNjktNC4xMzYgMjcuODM4LTIuNjI3IDI4LjAyIDMuMjM5LjM5MiAxMi42MDYtMTQuODIxIDEyLjYwNi0xNC44MjEgMCAxNS40NTkgMTMuOTU3IDM5LjE5NSA0NS45MTggMzkuNDEzaC44NDhjMzEuOTYtLjIxOCA0NS45MTctMjMuOTU0IDQ1LjkxNy0zOS40MTMgMCAwIDkuMzY4IDE1LjIxMyAxMi42MDcgMTQuODIyIDEuNTA4LS4xODMgMy40OTEtOC4zMzItMi42MjctMjguMDIxIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTQ5LjA4NSA0MC44MjRjLTQuMzUyLjE5Ny04LjA3LTQuNzYtOC4zMDQtMTEuMDYzLS4yMzYtNi4zMDUgMy4wOTgtMTEuNTc2IDcuNDUtMTEuNzczIDQuMzQ3LS4xOTUgOC4wNjQgNC43NiA4LjMgMTEuMDY1LjIzOCA2LjMwNi0zLjA5NyAxMS41NzctNy40NDYgMTEuNzcxbTMxLjEzMy0xMS4wNjNjLS4yMzMgNi4zMDItMy45NTEgMTEuMjYtOC4zMDMgMTEuMDYzLTQuMzUtLjE5NS03LjY4NC01LjQ2NS03LjQ0Ni0xMS43Ny4yMzYtNi4zMDUgMy45NTItMTEuMjYgOC4zLTExLjA2NiA0LjM1Mi4xOTcgNy42ODYgNS40NjggNy40NDkgMTEuNzczIi8+PHBhdGggZmlsbD0iI2ZhYWIwNyIgZD0iTTg3Ljk1MiA0OS43MjVDODYuNzkgNDcuMTUgNzUuMDc3IDQ0LjI4IDYwLjU3OCA0NC4yOGgtLjE1NmMtMTQuNSAwLTI2LjIxMiAyLjg3LTI3LjM3NSA1LjQ0NmEuODYzLjg2MyAwIDAwLS4wODUuMzY3Ljg4Ljg4IDAgMDAuMTYuNDk2Yy45OCAxLjQyNyAxMy45ODUgOC40ODcgMjcuMyA4LjQ4N2guMTU2YzEzLjMxNCAwIDI2LjMxOS03LjA1OCAyNy4yOTktOC40ODdhLjg3My44NzMgMCAwMC4xNi0uNDk4Ljg1Ni44NTYgMCAwMC0uMDg1LS4zNjUiLz48cGF0aCBkPSJNNTQuNDM0IDI5Ljg1NGMuMTk5IDIuNDktMS4xNjcgNC43MDItMy4wNDYgNC45NDMtMS44ODMuMjQyLTMuNTY4LTEuNTgtMy43NjgtNC4wNy0uMTk3LTIuNDkyIDEuMTY3LTQuNzA0IDMuMDQzLTQuOTQ0IDEuODg2LS4yNDQgMy41NzQgMS41OCAzLjc3MSA0LjA3bTExLjk1Ni44MzNjLjM4NS0uNjg5IDMuMDA0LTQuMzEyIDguNDI3LTIuOTkzIDEuNDI1LjM0NyAyLjA4NC44NTcgMi4yMjMgMS4wNTcuMjA1LjI5Ni4yNjIuNzE4LjA1MyAxLjI4Ni0uNDEyIDEuMTI2LTEuMjYzIDEuMDk1LTEuNzM0Ljg3NS0uMzA1LS4xNDItNC4wODItMi42Ni03LjU2MiAxLjA5Ny0uMjQuMjU3LS42NjguMzQ2LTEuMDczLjA0LS40MDctLjMwOC0uNTc0LS45My0uMzM0LTEuMzYyIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTYwLjU3NiA4My4wOGgtLjE1M2MtOS45OTYuMTItMjIuMTE2LTEuMjA0LTMzLjg1NC0zLjUxOC0xLjAwNCA1LjgxOC0xLjYxIDEzLjEzMi0xLjA5IDIxLjg1MyAxLjMxNiAyMi4wNDMgMTQuNDA3IDM1LjkgMzQuNjE0IDM2LjFoLjgyYzIwLjIwOC0uMiAzMy4yOTgtMTQuMDU3IDM0LjYxNi0zNi4xLjUyLTguNzIzLS4wODctMTYuMDM1LTEuMDkyLTIxLjg1NC0xMS43MzkgMi4zMTUtMjMuODYyIDMuNjQtMzMuODYgMy41MTgiLz48cGF0aCBmaWxsPSIjZWIxOTIzIiBkPSJNMzIuMTAyIDgxLjIzNXYyMS42OTNzOS45MzcgMi4wMDQgMTkuODkzLjYxNlY4My41MzVjLTYuMzA3LS4zNTctMTMuMTA5LTEuMTUyLTE5Ljg5My0yLjMiLz48cGF0aCBmaWxsPSIjZWIxOTIzIiBkPSJNMTA1LjUzOSA2MC40MTJzLTE5LjMzIDYuMTAyLTQ0Ljk2MyA2LjI3NWgtLjE1M2MtMjUuNTkxLS4xNzItNDQuODk2LTYuMjU1LTQ0Ljk2Mi02LjI3NUw4Ljk4NyA3Ni41N2MxNi4xOTMgNC44ODIgMzYuMjYxIDguMDI4IDUxLjQzNiA3Ljg0NWguMTUzYzE1LjE3NS4xODMgMzUuMjQyLTIuOTYzIDUxLjQzNy03Ljg0NXptMCAwIi8+PC9zdmc+" alt="加入 QQ 群" /></a>
|
||
</p>
|
||
<p>
|
||
<img src="https://img.shields.io/badge/MySQL-4479A1?logo=mysql&logoColor=white" />
|
||
<img src="https://img.shields.io/badge/PostgreSQL-4169E1?logo=postgresql&logoColor=white" />
|
||
<img src="https://img.shields.io/badge/SQLite-003B57?logo=sqlite&logoColor=white" />
|
||
<img src="https://img.shields.io/badge/Redis-DC382D?logo=redis&logoColor=white" />
|
||
<img src="https://img.shields.io/badge/MongoDB-47A248?logo=mongodb&logoColor=white" />
|
||
<img src="https://img.shields.io/badge/DuckDB-FFF000?logo=duckdb&logoColor=black" />
|
||
<img src="https://img.shields.io/badge/ClickHouse-FFCC01?logo=clickhouse&logoColor=black" />
|
||
<img src="https://img.shields.io/badge/SQL%20Server-CC2927?logo=microsoftsqlserver&logoColor=white" />
|
||
<img src="https://img.shields.io/badge/Oracle-F80000?logo=oracle&logoColor=white" />
|
||
<img src="https://img.shields.io/badge/Elasticsearch-005571?logo=elasticsearch&logoColor=white" />
|
||
<img src="https://img.shields.io/badge/MariaDB-003545?logo=mariadb&logoColor=white" />
|
||
<img src="https://img.shields.io/badge/TiDB-DC150B?logo=tidb&logoColor=white" />
|
||
<img src="https://img.shields.io/badge/Doris-0052CC?logoColor=white" />
|
||
<img src="https://img.shields.io/badge/StarRocks-5C2D91?logoColor=white" />
|
||
<img src="https://img.shields.io/badge/Redshift-8C4FFF?logo=amazonredshift&logoColor=white" />
|
||
<img src="https://img.shields.io/badge/OceanBase-006AFF?logoColor=white" />
|
||
<img src="https://img.shields.io/badge/openGauss-2B7BD9?logoColor=white" />
|
||
<img src="https://img.shields.io/badge/GaussDB-E60012?logoColor=white" />
|
||
<img src="https://img.shields.io/badge/KingBase-003B8E?logoColor=white" />
|
||
<img src="https://img.shields.io/badge/and%20more...-555555?logoColor=white" />
|
||
</p>
|
||
<p>
|
||
<a href="README.md">English</a> | 简体中文
|
||
</p>
|
||
|
||
<p>
|
||
<a href="docs/screenshot-light.png"><img src="https://cdn.jsdelivr.net/gh/t8y2/dbx@main/docs/screenshot-light.png" width="395" /></a>
|
||
<a href="docs/screenshot-dark.png"><img src="https://cdn.jsdelivr.net/gh/t8y2/dbx@main/docs/screenshot-dark.png" width="395" /></a>
|
||
</p>
|
||
<p>
|
||
<a href="docs/screenshot-er.png"><img src="https://cdn.jsdelivr.net/gh/t8y2/dbx@main/docs/screenshot-er.png" width="395" /></a>
|
||
<a href="docs/screenshot-grid.png"><img src="https://cdn.jsdelivr.net/gh/t8y2/dbx@main/docs/screenshot-grid.png" width="395" /></a>
|
||
</p>
|
||
</div>
|
||
|
||
## 功能特性
|
||
|
||
### 17+ 种数据库,一个工具搞定
|
||
|
||
MySQL、PostgreSQL、SQLite、Redis、MongoDB、DuckDB、ClickHouse、SQL Server、Oracle、Elasticsearch、MariaDB、TiDB、OceanBase、openGauss、GaussDB、KingBase、Vastbase、GoldenDB — 全部在一个约 15 MB 的应用中连接。不内嵌 Chromium。
|
||
|
||
### 查询编辑器
|
||
|
||
CodeMirror 6 语法高亮、智能自动补全(表名和字段)、`Cmd+Enter` 执行、选中 SQL 执行、SQL 格式化,9 种编辑器主题。查询历史持久化存储,支持搜索和恢复。
|
||
|
||
### AI SQL 助手
|
||
|
||
用自然语言描述你的需求,直接生成 SQL。还能解释、优化、修复错误。支持 Claude、OpenAI 或任何 OpenAI 兼容端点。
|
||
|
||
### 数据表格
|
||
|
||
虚拟滚动,轻松应对百万行数据。行内编辑、排序、全文搜索、分页、列宽调整、行号、斑马纹。支持导出为 CSV、JSON、Markdown。
|
||
|
||
### Schema 工具
|
||
|
||
- **结构浏览** — 数据库、Schema、表、字段、索引、外键、触发器,支持侧边栏搜索和置顶
|
||
- **ER 关系图** — 可视化表间关联
|
||
- **Schema 对比** — 跨连接对比表结构差异
|
||
- **执行计划** — 可视化查询执行计划
|
||
- **字段血缘** — 字段级血缘分析
|
||
|
||
### 数据操作
|
||
|
||
- **数据导入** — CSV、Excel
|
||
- **数据迁移** — 在数据库之间迁移数据
|
||
- **数据库导出** — 完整数据库导出
|
||
- **SQL 文件执行** — 直接执行 `.sql` 文件
|
||
- **文件预览** — 拖入 Parquet、CSV、JSON 即时预览(基于 DuckDB)
|
||
|
||
### 专项浏览器
|
||
|
||
- **Redis** — 模式匹配搜索,全数据类型支持(String、Hash、List、Set、ZSet、Stream)
|
||
- **MongoDB** — 文档增删改查、分页浏览,支持 Atlas 和副本集 URL 直连
|
||
|
||
### 安全与连接
|
||
|
||
SSH 隧道(密钥和密码认证)· 断线自动重连 · 危险操作确认对话框 · 加密导出/导入连接配置 · 连接颜色标记
|
||
|
||
### 精致 UI
|
||
|
||
深色模式原生标题栏同步 · 9 种编辑器主题 · English & 简体中文 · 内置自动更新
|
||
|
||
## AI 编程助手集成 (MCP)
|
||
|
||
DBX 提供 [MCP Server](mcp/),让 AI 编程助手直接使用 DBX 中已配置的数据库连接查询数据。
|
||
|
||
```bash
|
||
npx @dbx-app/mcp-server
|
||
```
|
||
|
||
在 `.mcp.json` 中添加:
|
||
|
||
```json
|
||
{
|
||
"mcpServers": {
|
||
"dbx": { "command": "npx", "args": ["-y", "@dbx-app/mcp-server"] }
|
||
}
|
||
}
|
||
```
|
||
|
||
支持 Claude Code、Cursor、Windsurf 等 MCP 兼容的 AI 助手。可列出连接、浏览表、执行 SQL,还能直接在 DBX 界面中打开表。
|
||
|
||
详见 [MCP Server 说明](mcp/README.md)。
|
||
|
||
## 安装
|
||
|
||
从 [Releases](https://github.com/t8y2/dbx/releases/latest) 页面下载最新版本。
|
||
|
||
**Homebrew (macOS):**
|
||
|
||
```bash
|
||
brew install --cask t8y2/tap/dbx
|
||
```
|
||
|
||
**Scoop (Windows):**
|
||
|
||
```bash
|
||
scoop bucket add dbx https://github.com/t8y2/scoop-bucket
|
||
scoop install dbx
|
||
```
|
||
|
||
## 自托管 (Docker)
|
||
|
||
DBX 提供 Web 版本,可通过 Docker 部署。
|
||
|
||
```bash
|
||
docker run -d --name dbx -p 4224:4224 -v dbx-data:/app/data t8y2/dbx
|
||
```
|
||
|
||
或使用 Docker Compose:
|
||
|
||
```yaml
|
||
services:
|
||
dbx:
|
||
image: t8y2/dbx
|
||
ports:
|
||
- "4224:4224"
|
||
volumes:
|
||
- dbx-data:/app/data
|
||
restart: unless-stopped
|
||
|
||
volumes:
|
||
dbx-data:
|
||
```
|
||
|
||
浏览器访问 `http://localhost:4224`。支持 amd64 / arm64 双架构镜像。
|
||
|
||
## 快速开始
|
||
|
||
### 环境要求
|
||
|
||
- [Node.js](https://nodejs.org/) >= 18
|
||
- [pnpm](https://pnpm.io/)
|
||
- [Rust](https://www.rust-lang.org/tools/install) >= 1.77
|
||
|
||
#### 系统依赖
|
||
|
||
**macOS:**
|
||
|
||
无需额外安装。
|
||
|
||
**Linux (Ubuntu/Debian):**
|
||
|
||
```bash
|
||
sudo apt-get install -y libwebkit2gtk-4.1-dev libgtk-3-dev libappindicator3-dev librsvg2-dev patchelf libssl-dev
|
||
```
|
||
|
||
**Windows:**
|
||
|
||
无需额外安装。
|
||
|
||
### 开发
|
||
|
||
```bash
|
||
pnpm install
|
||
pnpm dev:tauri
|
||
```
|
||
|
||
Web 版本:
|
||
|
||
```bash
|
||
pnpm dev:web # 前端
|
||
pnpm dev:backend # 后端
|
||
```
|
||
|
||
### 构建
|
||
|
||
```bash
|
||
pnpm tauri build
|
||
```
|
||
|
||
安装包输出在 `src-tauri/target/release/bundle/` 目录。
|
||
|
||
## 技术栈
|
||
|
||
| 层级 | 技术 |
|
||
|------|------|
|
||
| 框架 | [Tauri 2](https://tauri.app/) |
|
||
| 前端 | [Vue 3](https://vuejs.org/) + TypeScript |
|
||
| UI | [shadcn-vue](https://www.shadcn-vue.com/) + Tailwind CSS |
|
||
| 编辑器 | [CodeMirror 6](https://codemirror.net/) |
|
||
| 后端 | Rust + [sqlx](https://github.com/launchbadge/sqlx) / [tiberius](https://github.com/prisma/tiberius) / [redis-rs](https://github.com/redis-rs/redis-rs) / [mongodb](https://github.com/mongodb/mongo-rust-driver) |
|
||
|
||
## 社区
|
||
|
||
[](https://discord.gg/W7NyVDRt6a)
|
||
[](https://qm.qq.com/q/1087880322)
|
||
[](https://linux.do)
|
||
|
||
## 贡献者
|
||
|
||
<a href="https://github.com/t8y2/dbx/graphs/contributors">
|
||
<img src="https://contrib.rocks/image?repo=t8y2/dbx" />
|
||
</a>
|
||
|
||
## Star History
|
||
|
||
<a href="https://www.star-history.com/?repos=t8y2%2Fdbx&type=date&legend=top-left">
|
||
<picture>
|
||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=t8y2/dbx&type=date&theme=dark&legend=top-left" />
|
||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=t8y2/dbx&type=date&legend=top-left" />
|
||
<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=t8y2/dbx&type=date&legend=top-left" />
|
||
</picture>
|
||
</a>
|
||
|
||
## 开源协议
|
||
|
||
[AGPL-3.0](LICENSE)
|