< 返回版块

shencangsheng 发表于 2025-09-23 14:43

Tags:txt,csv,xlsx,json,query-editor,sql-assisant

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 可用空间

安装方式

  1. 下载安装包

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

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

    • 双击应用图标启动 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

评论区

写评论

还没有评论

1 共 0 条评论, 1 页