EasyDB
一个简约强大的 SQL 桌面客户端,支持多种文件格式查询
📖 简介
EasyDB 是一个简约强大的 SQL 桌面客户端,基于 Rust 构建,具备高性能的文件查询能力,轻松处理数百兆乃至数 GB 的大型文本文件,仅需极少的硬件资源。支持 CSV、NdJson、JSON、Excel 和 Parquet 文件格式,无需进行文件转换,开箱即用。
🎯 设计理念
EasyDB 旨在简化文本文件查询过程,让您能够将多个文本文件视为一个数据库,并使用熟悉的 SQL 语法进行查询。无论是数据分析师、开发者还是普通用户,都能轻松上手。
✨ 核心特性
- 🚀 高性能: 基于 Rust 和 Polars 引擎,处理大型文件游刃有余
- 💾 低内存占用: 流式计算能力,仅需极少的硬件资源
- 📁 多格式支持: CSV、NdJson、JSON、Excel、Parquet 文件格式
- 🔧 开箱即用: 无需文件转换,直接查询
- 🖥️ 跨平台: 支持 macOS 和 Windows 平台
- 🎨 现代界面: 基于 Tauri 构建的现代化桌面应用
🛠️ 技术架构
核心技术栈
- 前端: React + TypeScript + Vite
- 后端: Rust + Tauri
- 查询引擎: pola-rs/polars
- UI 框架: HeroUI + Tailwind CSS
查询引擎选择
当前使用: Polars
与 DataFusion 相比,Polars 具备更高的轻量性和流式计算能力,显著降低了内存占用,更加适合个人电脑使用。
技术考虑: 在深入使用 Polars 后发现其技术短板也很明显,无法支持复杂 SQL 查询,并且社区的开发资源主要集中在 Python 上,很多功能需要自己开发或兼容。因此正在考虑换回 DataFusion 以获得更完整的 SQL 支持。
📚 使用指南
基本语法
-- 查询 CSV 文件
SELECT *
FROM read_csv('/path/to/file.csv', infer_schema => false)
WHERE age > 30
LIMIT 10;
-- 查询 Excel 文件
SELECT *
FROM read_excel('/path/to/file.xlsx', sheet_name => 'Sheet2')
WHERE age > 30
LIMIT 10;
-- 查询 JSON 文件
SELECT *
FROM read_json('/path/to/file.json')
WHERE status = 'active';
支持的文件格式
格式 | 函数 | 说明 |
---|---|---|
CSV | read_csv() |
支持自定义分隔符和编码 |
Excel | read_excel() |
支持多工作表 |
JSON | read_json() |
支持嵌套结构 |
NdJson | read_ndjson() |
每行一个 JSON 对象 |
Parquet | read_parquet() |
列式存储格式 |
🚀 快速开始
系统要求
- macOS: 10.15+ (Catalina 或更高版本)
- Windows: Windows 10 或更高版本
- 内存: 建议 4GB 以上
- 存储: 至少 100MB 可用空间
安装方式
-
下载安装包
- 访问 Releases 页面
- 下载适合您系统的安装包
-
安装应用
- macOS: 下载
.dmg
文件,拖拽到应用程序文件夹 - Windows: 下载
.exe
文件,运行安装程序
- macOS: 下载
-
启动应用
- 双击应用图标启动 EasyDB
- 开始您的数据查询之旅!
❓ 常见问题
JOIN 查询错误
问题: 在执行 JOIN 查询时出现 unsupported SQL join constraint
异常
解决方案: 去掉 ON 表达式的括号。这是因为 Polars 的限制:它目前的 join constraint 只支持最简单的等值连接。
-- ❌ 错误写法
SELECT *
FROM table1 t1
JOIN table2 t2 ON (t1.id = t2.id);
-- ✅ 正确写法
SELECT *
FROM table1 t1
JOIN table2 t2 ON t1.id = t2.id;
📖 项目背景
从 Server 到 App
EasyDB Server 主要部署于 Linux 服务器,作为 Web 服务支持大规模文本文件的高效查询。尽管已提供 Docker 部署方案,但在 macOS 上的使用仍不够便捷。
为此,我开发了 EasyDB App 客户端,专门为 macOS 和 Windows 平台优化,改善个人用户的本地使用体验。
Ext Link: https://github.com/shencangsheng/easydb_app
评论区
写评论还没有评论