这是indexloc提供的服务,不要输入任何密码
Skip to content

EasyDB is a lightweight Rust-based desktop tool that lets you query local CSV, Excel, and JSON files directly with SQL. It has a built-in query engine, requires no external database, and efficiently handles large files from hundreds of MB to several GB.

Notifications You must be signed in to change notification settings

shencangsheng/easydb_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EasyDB

EasyDB Logo

一个轻量级的桌面数据查询工具,使用 SQL 直接查询本地文件,内置查询引擎

License: MIT Version Platform

English | 中文

📖 简介

EasyDB 是一个轻量级桌面数据查询工具,基于 Rust 构建,可以使用 SQL 直接查询本地文件。内置 DataFusion 查询引擎,无需额外安装数据库或其他工具。它将文件视为数据库表,可以使用标准 SQL 查询 CSV、Excel、JSON 和其他格式,支持复杂的多表 JOIN、子查询、窗口函数等高级 SQL 特性。轻松处理数百兆乃至数 GB 的大型文本文件,仅需较少的硬件资源。

demo.gif

✨ 核心特性

  • 🚀 高性能: 基于 Rust 和 DataFusion 引擎,处理大型文件游刃有余
  • 💾 低内存占用: 仅需较少的硬件资源
  • 📁 多格式支持: CSV、NdJson、JSON、Excel、Parquet 文件格式
  • 🔧 开箱即用: 无需文件转换,直接查询
  • 🖥️ 跨平台: 支持 macOS 和 Windows 平台
  • 🎨 现代界面: 基于 Tauri 构建的现代化桌面应用
  • 🔍 完整 SQL 支持: 支持复杂 SQL 查询,包括 JOIN、子查询、窗口函数等高级特性

🗺️ 功能与路线图

  • 支持 CSV 文件查询
  • 支持 TSV 文件查询
  • 支持 JSON 文件查询
  • 支持 Excel 文件查询
  • 支持 Parquet 文件查询
  • Excel 实现懒加载性能优化
  • Excel 兼容更多数据类型
  • 支持多会话窗口
  • 支持拖拽文件自动生成 SQL 语句
  • 支持目录浏览
  • 支持 S3 远程文件
  • 支持直接查询服务器上的文件
  • 支持数据可视化
  • 支持查询结果导出
  • 支持将查询结果导出为 SQL 语句(Insert、Update)

🛠️ 技术架构

核心技术栈

  • 前端: React + TypeScript + Vite
  • 后端: Rust + Tauri
  • 查询引擎: apache/datafusion
  • UI 框架: HeroUI + Tailwind CSS

查询引擎选择

当前使用: DataFusion

DataFusion 是 Apache Arrow 项目的一部分,提供了完整的 SQL 查询能力,支持复杂的 SQL 语法,包括多表 JOIN、子查询、窗口函数等高级特性。相比 Polars,DataFusion 在 SQL 兼容性方面更加完善,能够满足更复杂的查询需求。

版本演进: v1.0 版本曾使用 Polars 引擎,虽然 Polars 在流式计算和内存占用方面表现优异,但在复杂 SQL 查询支持上存在限制。v2.0 版本切换回 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 可用空间

安装方式

  1. 下载安装包

    • 访问 Releases 页面
    • 下载适合您系统的安装包
  2. 安装应用

    • macOS: 下载 .dmg 文件,拖拽到应用程序文件夹
    • Windows: 下载 .exe 文件,运行安装程序

❓ 常见问题

macOS 应用损坏问题

问题: 在 macOS 上打开 EasyDB 时提示"应用已损坏,无法打开"

解决方案: 这是由于 macOS 的安全机制(Gatekeeper)阻止了未签名的应用。请按以下步骤解决:

  1. 打开终端(Terminal)
  2. 执行以下命令移除隔离属性:
    xattr -r -d com.apple.quarantine /Applications/EasyDB.app
  3. 重新尝试打开应用

替代方案: 如果上述方法无效,可以尝试在系统偏好设置中允许该应用:

  1. 打开"系统偏好设置" > "安全性与隐私"
  2. 在"通用"标签页中,找到被阻止的应用
  3. 点击"仍要打开"按钮

语法问题

字段名可以使用双引号包裹,例如:

SELECT "id", "name" FROM table WHERE "id" = 1;

也可以使用反引号包裹,例如:

SELECT `id`, `name` FROM table WHERE `id` = 1;

WHERE 子句中的字符串值使用单引号包裹,例如:

SELECT * FROM table WHERE "id" = '1';

📖 项目背景

从 Server 到 App

EasyDB Server 主要部署于 Linux 服务器,作为 Web 服务支持大规模文本文件的高效查询。尽管已提供 Docker 部署方案,但在 macOS 上的使用仍不够便捷。

为此,我开发了 EasyDB App 客户端,专门为 macOS 和 Windows 平台优化,改善个人用户的本地使用体验。

项目命名

为了更好地区分两个项目:

  • EasyDB Server: 服务器端版本,基于 DataFusion
  • EasyDB App: 桌面客户端版本,基于 DataFusion(v2.0+)

🤝 贡献指南

我们欢迎各种形式的贡献!

如何贡献

  1. Fork 本仓库
  2. 创建您的特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交您的更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开一个 Pull Request

开发环境

# 克隆仓库
git clone https://github.com/shencangsheng/easydb_app.git
cd easydb_app

# 启动开发服务器
cargo tauri dev

# 构建应用
cargo tauri build

📄 许可证

A short snippet describing the license (MIT)

MIT © Cangsheng Shen

👨‍💻 作者

Cangsheng Shen

🙏 致谢

感谢以下开源项目的支持:

📞 联系我们


⭐ 如果这个项目对您有帮助,请给我们一个 Star!

Made with ❤️ by Cangsheng Shen

About

EasyDB is a lightweight Rust-based desktop tool that lets you query local CSV, Excel, and JSON files directly with SQL. It has a built-in query engine, requires no external database, and efficiently handles large files from hundreds of MB to several GB.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published