macOS 原生的 SQLite 数据库查看器

打开数据库,管理数据表和表结构,编辑数据,执行任意 SQL —— 还能在访达里按一下空格直接预览 .sqlite 文件。

macOS 14.4+ · 支持 Apple 芯片与 Intel · MIT 许可 · 无任何遥测

它能做什么

浏览和编辑数据

每页 50–1000 行分页浏览。排序和 WHERE 过滤都下推给 SQLite 执行,百万行表也不卡。可以插入、修改、删除行;NULL、BLOB 和数值分别以不同样式显示。

管理表结构

图形化建表:列类型、主键、自增、非空、唯一、默认值、复合主键、WITHOUT ROWID。增加 / 重命名 / 删除列,重命名和删除表,创建和删除索引。

执行复杂查询

支持多语句的 SQL 编辑器,⌘R 执行,可查看 EXPLAIN QUERY PLAN、耗时和影响行数。查询结果或当前表页可导出为 CSV、TSV、JSON 或 INSERT 语句。

看清每一处细节

结构标签页显示列、外键、索引;建表语句标签页显示原始 CREATE 语句;信息标签页显示页大小、编码、日志模式、user_version,并提供完整性检查和整理数据库。

你自己的后缀名

默认识别 .db、.db3、.sqlite、.sqlite3、.sqlitedb、.s3db、.sl3,也可以自己添加任意后缀名,并一键设为由 QLite 默认打开。

中英双语

在设置里切换语言,整个界面(含菜单栏)立刻跟着变,不需要重启应用。

它会读预写日志

多数查看器只打开主库文件,于是应用已经提交到 -wal 里的数据看起来就像丢了。QLite 会连同 -wal、-shm、-journal 一起读——应用内和 QuickLook 预览里都一样。

  • 直接打开 foo.db-wal 会自动打开 foo.db。
  • 当这些文件无法就地打开时(只读卷、沙盒中的预览扩展),会退回到「把整套文件复制到临时目录再打开」。
  • 连复制都做不到时,才以 immutable 方式只读主库,并明确告诉你当前显示的是最后一次合并后的状态,而不是默默给你旧数据。
  • 需要时可以用「合并 WAL 日志」把日志并回主库。
日志文件
sample.db-wal132 KB
sample.db-shm32 KB
预写日志中还有 132 KB 尚未合并到主库。
合并 WAL 日志

在访达里按一下空格

QLite 会安装两个 QuickLook 扩展。在访达里选中数据库按空格,就能看到库里的表、字段、行数和几行示例数据,完全不用打开应用。访达图标也会变成一张列着前几张表名字的卡片。

inventory.sqlite
4 张表 · 2 个视图 · 6 个索引 · 1.2 MB
products1,284 行
id INTEGER · sku TEXT · name TEXT · price REAL · stock INTEGER
1SKU-0001Desk lamp39.0
2SKU-0002Notebook4.5
3SKU-0003Keyboard89.0
orders7,910 行
id INTEGER · product_id INTEGER · qty INTEGER · created_at DATETIME

两个扩展都能在设置里开关,并一键重新注册——访达预览没更新时通常就是靠它解决。

安装

使用发行版

下载 DMG,把 QLite 拖进「应用程序」,启动一次让系统注册 QuickLook 扩展;PKG 安装包会自动完成注册。

构建使用 ad-hoc 签名,没有做公证。如果 Gatekeeper 拦截首次启动,右键选择「打开」,或执行:

xattr -dr com.apple.quarantine /Applications/QLite.app

从源码构建

brew install xcodegen
git clone https://github.com/Clizo1209/QLite.git
cd QLite
make run

需要 macOS 14.4+、Xcode 15.3+ 和 XcodeGen。make test 跑单元测试,make dmg / make pkg 打安装包。

常见问题

它会改动我的数据库吗?

只有你明确操作时才会。浏览、预览和查询都不会写入;改数据和改结构执行的 SQL 会显示在状态栏,破坏性操作都会先确认。QuickLook 预览绝不碰你的文件——需要重放 WAL 时用的是临时副本。

为什么没有沙盒、不上 App Store?

App Sandbox 只授予你选中的那个文件的权限,不含旁边的 -wal / -shm / -journal,并且禁止注册 QuickLook 扩展和设置默认打开方式——而这些恰好是 QLite 的核心功能。所以应用本体不开沙盒,也不在 App Store 分发;两个 QuickLook 扩展仍然是沙盒化的。

能打开多大的数据库?

数据分页读取,排序和过滤都在 SQLite 内完成,文件多大基本无所谓。查询编辑器对单次结果限制 1 万行,避免失控的 SELECT 吃光内存。QuickLook 预览每张表只取几行示例,所以几个 GB 的库也是秒开。

没有主键的表能编辑吗?

行通过 rowid 定位,WITHOUT ROWID 表则用主键定位。两者都没有的表无法安全定位到某一行,QLite 会禁用编辑并说明原因。视图是只读的。

它会联网上传数据吗?

不会。没有任何统计、更新检查或网络代码。唯一的外链是帮助菜单里的 GitHub 地址,而且要你自己点。

快捷键

⌘O打开数据库
⌘N新建数据库
⌘1⌘4数据 · 结构 · 查询 · 信息
⌘T新建表
⌘I插入行
⌘R执行查询
⌘F定位到过滤框
⌘E导出结果