< 返回版块

shencangsheng 发表于 2026-06-16 15:13

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

EasyDB v2.11.0:把「会写 SQL」变成你处理一切数据的超能力

不用导入数据库,不用写脚本,不用装一堆工具。一份 CSV、一个 Excel、一张 MySQL 表,用一条标准 SQL 就能查、能联、能导出。打开即用,全程离线。

先放结论:如果你经常要从各种文件和数据库里捞数据、对数、做清洗,EasyDB 大概率能帮你省下大量「为了查几行数据而折腾环境」的时间。这篇文章会先讲它能帮你做什么,再讲 v2.11.0 这次更新带来了什么。


一、它到底能帮你解决什么问题?

我们每天都在和数据打交道,但很多场景其实卡在「工具太重」上:

  • 想查一份几百 MB 的 CSV 里满足条件的行 → Excel 打不开,命令行 grep 又写不出复杂条件
  • 想把一个 Excel 报表和数据库里的表对一下账 → 得先把 Excel 导入数据库,建表、定字段类型、写导入脚本……
  • 想把清洗后的数据生成 INSERT 语句灌进另一个库 → 手写 SQL 或者临时写个 Python 脚本
  • 想用窗口函数、子查询分析本地文件 → 文件不是数据库,根本没法直接跑 SQL

EasyDB 的思路很简单:把文件直接当成数据库表,让你用最熟悉的 SQL 去操作一切数据源。 你已经会的 SQL 技能,在这里能用到 CSV、Excel、JSON、Parquet 上,甚至和 MySQL、PostgreSQL 混在一条语句里查。

-- Excel 报表 × PostgreSQL 库存表,一次 JOIN 对完账
SELECT t1."product_name", t2."inventory_count"
FROM read_excel('/data/products.xlsx') AS t1
INNER JOIN
read_postgres('inventory', host => 'localhost', username => 'postgres', db => 'mydb') AS t2
ON t1."product_id" = t2."id"
WHERE t2."inventory_count" < 100;

没有建表,没有导入,没有 ETL。把文件路径写进 SQL,回车,结果就出来了。


二、它适合谁?几个真实场景

数据分析师 / 运营:拿到一份几十万行的 Excel/CSV,只想筛出符合条件的几行、做个分组统计。拖进 EasyDB,写一句 SQL,⌘Enter 就出结果——比在 Excel 里拉筛选、写公式快得多,文件再大也不卡。

-- 按部门算平均薪资(窗口函数)
SELECT "name", "department", "salary",
       AVG("salary") OVER (PARTITION BY "department") AS dept_avg
FROM read_csv('/data/employees.csv');

DBA / 后端工程师:要把一批文件数据导入数据库,或者把一张表的数据迁到另一个库。用 EasyDB 查出来,直接导出成 INSERT / UPDATE 语句(可选 MySQL / PostgreSQL 方言),还能重命名字段、移除多余列、指定每列的目标类型,生成的 SQL 拿来就能执行

需要跨源核对数据的人:本地文件和线上数据库的数据不一致?不用来回导出导入,一条 JOIN 直接在同一条 SQL 里比对。

任何临时要查数据、又不想搭环境的人:日志文件、导出的报表、第三方给的数据包……拖进来就能查。完全离线,数据不出本机,敏感数据也放心。

-- 在日志文件里用正则筛出错误行(整行作为一列 column_1)
SELECT *
FROM read_text('/data/app.log', has_header => false)
WHERE REGEXP_LIKE("column_1", '^ERROR:\s+\d{3}');

三、为什么是 EasyDB,而不是别的?

  • 真·开箱即用:原生桌面应用(macOS / Windows),下载安装就能用,不需要 CLI、不需要写代码、不需要联网加载资源
  • 够快、够省:基于 Rust + Apache DataFusion,几百 MB 到数 GB 的文件也能稳定处理,硬件要求不高
  • SQL 足够完整:多表 JOIN、子查询、窗口函数、正则匹配……DataFusion 提供的是完整 SQL,不是阉割版
  • 拖拽即生成 SQL:文件拖进编辑器自动生成查询语句,配合语法高亮、智能补全(函数名 + 列名)、格式化,写起来很顺
  • 数据安全:纯本地运行,全程离线,数据不上传任何服务器

经常有人问:「这不就是 DuckDB 吗?」两者定位不同,各有长短,这里客观对比一下:

维度 EasyDB DuckDB
使用方式 原生桌面 GUI,拖文件即查 CLI / 编程 API,可嵌入程序
上手门槛 会写 SQL 就行 需了解其语法与 API
查询性能 够用,常规分析流畅 更强,向量化引擎在大规模 OLAP 上领先
生态扩展 内置数据源,开箱即用 扩展丰富、社区活跃、可编程性强
SQL 导出 内置 INSERT/UPDATE,可选方言 需自行编程实现
集成能力 独立桌面应用,不便嵌入其他程序 可作为库嵌入 Python/Java 等,便于自动化

DuckDB 的优势:自研向量化引擎性能更强,尤其在大规模分析查询上;生态成熟、扩展多,能作为库嵌入程序,适合做数据管道和自动化。它的代价是更偏开发者——没有原生 GUI,需要命令行或写代码。

EasyDB 的优势:原生桌面应用、开箱即用、拖拽生成 SQL、内置 SQL 导出,会写 SQL 就能上手,适合临时查数、对账、做清洗。它的不足也很明显——查询性能和生态扩展性不及 DuckDB,也不适合嵌入到其他程序里做自动化。

一句话:要把分析能力嵌进程序、追求极致性能,选 DuckDB;想拖个文件写句 SQL 马上拿结果,选 EasyDB。


四、v2.11.0 这次更新了什么

距离上次在社区分享 v2.8.0,EasyDB 连续迭代了 v2.9、v2.10、v2.11,这里一次性讲清楚。

read_json() 回归,标准 JSON 数组终于支持

早期切换查询引擎时 read_json() 曾被临时移除,只能逐行读 NDJSON。但很多人手上的 JSON 其实是标准数组格式[{...}, {...}])。这次它正式回归,而且更聪明:

  • 自动识别格式——按文件内容嗅探,[ 开头当标准 JSON 数组,{ 开头当 NDJSON,嗅探不出再回退扩展名
  • .json.ndjson 都能直接用,编辑器补全和拖拽模板统一改用 read_json()
  • 修复了带 UTF-8 BOM 的 JSON 数组被误判为 NDJSON 的问题
SELECT * FROM read_json('/data/records.json') WHERE "status" = 'active';

导出 SQL 一键复制到剪贴板

SQL 导出对话框新增**「复制 SQL 语句」,生成的 INSERT / UPDATE 不必再落地成文件,直接复制贴进数据库客户端就能跑。导出 / 复制全流程都加了进行中 / 成功 / 失败**状态提示;复制超过 10,000 行会自动截断并给出警告。

保存常用查询,告别重复粘贴(v2.10)

  • 常用 SQL 可命名保存,在左侧栏随时加载,支持搜索筛选与删除
  • 查询历史增强:关键词搜索、显示条数配置(50 / 100 / 200 / 500 / 全部)、按时间清理(7 / 30 / 90 天前或全部清空)
  • 执行后自动切到结果页签,底部显示本次查询耗时

表头直接显示列类型(v2.9)

查询结果表头会展示每列的 Arrow 类型,一眼看清数据结构;SQL 导出的列类型配置也直接复用查询结果的类型信息,少一次后端请求。

性能与稳定性

  • SQL 生成改用 RecordBatch 批处理,显著降低导出内存占用
  • Apache DataFusion 升级至 53.1.0
  • 优化 Excel 日期时间解析,修复序列号被误当日期字符串、空格分隔日期时间等问题
  • 修复注册远程文件路径(HTTP / S3 等 URL)时误报「文件不存在」的问题

数据源一览

格式 函数 说明
CSV read_csv() 自定义分隔符、表头、Schema 推断
TSV read_tsv() Tab 分隔文件
Text read_text() 通用文本文件,自定义分隔符
Excel read_excel() / read_xlsx() .xlsx 支持,可选工作表
JSON read_json() 标准 JSON 数组与 NDJSON,自动检测
NdJson read_ndjson() 每行一个 JSON 对象
Parquet read_parquet() 列式存储格式
MySQL read_mysql() 直连 MySQL 数据库表
PostgreSQL read_postgres() 直连 PostgreSQL 数据库表

技术栈

层级 技术
前端 React 18 + TypeScript + Vite
后端 Rust + Tauri v2
查询引擎 Apache DataFusion 53.1.0
UI 框架 HeroUI + Tailwind CSS
SQL 编辑器 Ace Editor (react-ace)
SQL 解析 sqlparser-rs (Rust) + node-sql-parser (JS)
历史存储 SQLite (rusqlite)

快速开始

  1. 访问 GitHub Releases 下载安装包
  2. macOS:下载 .dmg,拖拽到应用程序文件夹
  3. Windows:下载 .exe,运行安装程序
  4. 拖拽任意文件到编辑器自动生成 SQL,按 ⌘Enter 执行

macOS 若提示「应用已损坏」,在终端执行: xattr -r -d com.apple.quarantine /Applications/EasyDB.app


GitHubhttps://github.com/shencangsheng/easydb_app

EasyDB 是我利用业余时间维护的开源项目,如果它能帮你少折腾一点、多省一点时间,欢迎点个 Star,也欢迎到 Issues 提想法和反馈——很多功能就是这么一点点被大家提出来、加进去的。


Ext Link: https://github.com/shencangsheng/easydb_app

评论区

写评论

还没有评论

1 共 0 条评论, 1 页