ZeroTool Workbench

SQLite 查看器

在浏览器中打开 SQLite .db / .sqlite 文件:查看表结构、索引与数据,执行 SQL 查询并导出 CSV。文件只在本机处理,不上传。

100% 浏览器端运行 数据不离开你的设备 免费 · 无需注册

Drop a SQLite file here

.db · .sqlite · .sqlite3 — up to 100 MB · or click to choose · never uploaded

阅读完整使用指南 浏览器 SQLite 查看器:不上传,直接检查 .db 文件

使用步骤

  1. 把 .db、.sqlite 或 .sqlite3 文件拖到上传区,或点击选择文件。
  2. 在左侧列表里选一张表或一个视图。数据上方会显示列名、类型、主键、索引以及原始 CREATE 语句。
  3. 用上一页 / 下一页按每页 100 行翻看数据。
  4. 在 SQL 编辑框写任意查询,点执行 SQL或按 Ctrl/Cmd + Enter。
  5. 点导出 CSV,保存整张表,或最近一次查询的完整结果。

什么时候用浏览器打开 SQLite

  • 核对 agent 或脚本写进库里的东西。coding agent 跑了迁移、灌了测试数据,信它之前先打开文件亲眼看看每一行。
  • 读应用的本地数据。浏览器、手机 App、Electron 应用和很多命令行工具都把状态存在 SQLite 里。把文件拷出来就能看,不用装桌面客户端。
  • 把数据交给别人。跑一条查询,导出 CSV 发出去,数据库本身留在你手里。

各类值的显示方式

值表格中显示CSV 中
NULL灰色 NULL 标记,不会和空字符串混淆空字段
BLOB字节数 + 前 16 字节的十六进制完整内容的大写十六进制
长文本单元格内截断,鼠标悬停看更多完整值,按 RFC 4180 加引号
数字右对齐原样输出

查询结果只渲染前 1,000 行,保证页面不卡;导出的 CSV 始终包含全部行。

实现原理

页面先只读取文件前 100 字节,校验 SQLite 文件头。校验通过后才下载 SQLite 引擎(sql.js,压缩后约 340 KB),所以打开页面本身没有额外开销,选错文件也不会触发下载。随后整个文件作为内存数据库交给 SQLite。表结构来自 pragma_table_info 和 pragma_index_list;所有表名和列名都会加引号,名字里带空格、引号或中文都没问题。

范围

本工具打开单个不超过 100 MB 的 SQLite 3 文件并读取它。不把改动写回文件,不读取 -wal / -journal 附属文件,不打开加密数据库。依赖扩展的虚拟表(如 SpatiaLite 几何表、FTS5 全文索引、R-Tree 索引)会显示 SQLite 报错而不是数据。这些情况请在本机使用 sqlite3 命令行或 DB Browser for SQLite。

FAQ

数据库文件会上传吗?

不会。文件通过浏览器 File API 读取,由编译成 WebAssembly 的 SQLite(sql.js)在页面内打开,全程没有服务器参与,本页也不加载任何统计或广告脚本。这正是这个工具存在的理由:数据库里通常是用户记录、token 或生产数据,不该贴进 AI 对话,也不该传到别人的服务器上。

执行 UPDATE 或 DELETE 会改动我的文件吗?

不会。浏览器对你选择的文件没有写权限。SQL 在内存副本上执行,INSERT、UPDATE、DELETE、CREATE 都能运行,左侧表列表也会刷新,但刷新页面或打开其他文件后改动就消失。本工具不提供下载改动后副本的功能。要修改磁盘上的文件,请用 sqlite3 命令行或 DB Browser for SQLite。

最大能打开多大的数据库?

100 MB。打开期间整个文件会在内存里存两份(文件缓冲区一份、SQLite 引擎内一份),再大就容易让浏览器标签页崩溃。更大的数据库请在本地运行 sqlite3 app.db。

为什么提示「不是 SQLite 数据库」?

每个 SQLite 3 文件都以 16 字节的文件头 SQLite format 3 开头。没有这个文件头,说明它是别的格式,或者被加密了。SQLCipher 和 SQLite Encryption Extension 连文件头一起加密,所以加密库无法在这里打开。请用 sqlcipher 解密,或用支持 SQLCipher 的 DB Browser for SQLite 打开。

最新写入的数据不见了,为什么?

数据库多半处于 WAL 模式,最新的写入还留在同目录的 app.db-wal 文件里,而本工具只读取主文件。先关闭正在写这个库的程序,或执行 sqlite3 app.db "PRAGMA wal_checkpoint(TRUNCATE);",再重新打开文件。