DuckDB SQL 工作台 - 五岁小孩

加载中...

🦆
拖拽 Parquet / CSV / JSON / Excel 文件到此处
支持 .parquet .csv .tsv .json .ndjson .xlsx .xls ,可同时拖入多个文件做 JOIN
文件仅在浏览器本地解析,DuckDB-Wasm 离线运行,不上传任何服务器
正在加载 DuckDB-Wasm 引擎(EH bundle,~35 MB)...

浏览器原生 OLAP 引擎

把 Parquet / CSV / JSON / Excel 文件直接拖进浏览器窗口,即可编写 SQL 查询、执行 JOIN 操作、进行数据聚合分析,并将结果导出为 Parquet、CSV、JSON 等多种格式。底层基于 @duckdb/duckdb-wasm —— 一个将 DuckDB 的 C++ 内核编译为 WebAssembly 的高性能引擎,与桌面版 DuckDB 完全兼容,仅需加载约 35MB 的 WASM 模块即可在浏览器中运行。

为何选择浏览器端运行

DuckDB 是近年来备受关注的「嵌入式分析型数据库」:采用列式存储、向量化执行引擎,原生支持 Parquet/CSV 零拷贝读取,兼容 PostgreSQL 语法。它被定位为「数据分析师的 SQLite」—— 无需部署服务端、无需安装客户端、单文件即可运行。将其编译为 WebAssembly 后,浏览器便拥有了一个本地 OLAP 查询引擎:你可以在前端执行 SQL JOIN、聚合统计、窗口函数等复杂操作,性能接近原生 CLI。

数据安全优先

本工具不设任何后端服务,文件通过 db.registerFileBuffer() 注册到 DuckDB 内部虚拟文件系统,所有解析与查询均在浏览器内存中完成,数据不会离开你的设备。WASM 引擎从 CDN 加载(约 35MB),加载完成后即可离线使用。

功能概览

界面分为三个核心区域:左侧为已加载的表结构树(显示表名、行数、列名及数据类型),点击表名可一键生成 SELECT * FROM table LIMIT 100 查询;右上为 SQL 编辑器(基于 CodeMirror,支持语法高亮、自动补全、快捷键 Ctrl+Enter 执行);右下为查询结果区(展示列名、数据类型、行数、执行耗时,支持导出为 Parquet/CSV/JSON 或复制为 TSV 格式)。

跨表关联查询

支持同时加载多个数据文件,每个文件自动注册为独立的数据表,可直接编写跨表 JOIN 查询:

SELECT u.name, COUNT(*) AS cnt
FROM events e
JOIN users u ON e.user_id = u.id
GROUP BY 1
ORDER BY 2 DESC
LIMIT 20;

与连接真实数据库几乎无异 —— 这也是 DuckDB 在数据分析领域广受好评的原因之一。

配套工具

如需查看 Parquet 文件结构和样本数据,可使用页面底部的 Parquet 预览器;完成查询后如需转换数据格式,可搭配 JSON/CSV 转换工具代码格式化工具(DuckDB SQL 也支持 sql-formatter 美化)。多个工具组合使用,覆盖「数据浏览 → 分析查询 → 结果导出」的完整工作流。

使用场景

临时数据探索

收到同事发来的 events.parquet + users.csv,无需安装任何客户端,直接拖入浏览器执行 SQL 关联查询,几分钟内完成分析。

CSV 替代电子表格

不想用 Excel 透视表也不愿写 pandas 脚本,直接将 CSV 拖入,执行 SELECT col, COUNT(*) FROM data GROUP BY 1 ORDER BY 2 DESC,比手动操作更高效。

验证 SQL 语法

在编写复杂的窗口函数 / CTE / QUALIFY / GROUP BY ALL 语句前,先在小样本数据上测试,DuckDB 语法与 PostgreSQL 高度兼容。

现场演示数据

向客户展示「能否这样查询」,浏览器实时执行实时展示结果,无需准备数据库实例也无需安装客户端。

结果数据交付

执行完 SQL 后一键导出 CSV 给运营/财务团队,或导出 JSON 给前端做 Mock 数据,省去 pandas to_csv 的中间步骤。

常见问题

为什么首次加载需要等待? +

首次使用需要下载 DuckDB 的 WebAssembly 引擎(约 35MB),加载完成后会缓存在浏览器中,后续使用将秒开。建议在稳定网络环境下首次访问。

支持哪些文件格式? +

目前支持 Parquet、CSV、TSV、JSON、NDJSON、XLSX、XLS 七种格式。其中 Parquet 和 CSV 是最常用的分析数据格式,JSON 适合 API 返回的数据。

文件大小有什么限制? +

理论上受限于浏览器可用内存。实测几十 MB 的 Parquet/CSV 文件可流畅处理,超大文件(数百 MB)可能因内存不足导致页面卡顿。建议对大文件先进行筛选或裁剪。

DuckDB 与 PostgreSQL 语法兼容吗? +

是的。DuckDB 的 SQL 方言与 PostgreSQL 高度兼容,支持窗口函数、CTE、数组类型、JSON 操作等高级特性,绝大多数 Postgres 查询可直接运行。

能否执行 INSERT / UPDATE / 自建表? +

可以。除了 SELECT 查询,也支持 INSERT、UPDATE、DELETE、CREATE TABLE、DROP TABLE 等 DDL/DML 操作。修改仅在当前浏览器会话中生效,刷新后恢复原状。

多文件 JOIN 怎么操作? +

将多个文件拖入或选择后,每个文件会自动注册为独立的数据表(以文件名命名),随后即可在 SQL 中直接 JOIN 这些表名,与操作传统数据库完全一致。

与 Parquet 预览器有什么区别? +

Parquet 预览器专注于快速查看文件结构和样本数据,适合「看一眼」的场景;本工具则提供完整的 SQL 查询能力,支持复杂分析、多表关联、结果导出等深度操作。

🦆 DuckDB-Wasm 已就绪
已注册表
还没有注册任何表,把文件拖进来。
SQL
DuckDB 已就绪
查询结果将显示在这里