先看结论
- SQLite Database 是 SQLite 数据库引擎的原生磁盘格式,用于保存表、索引、触发器和视图,没有强制扩展名,标准 SQLite 3 格式也不提供加密。
- 在 Windows 或 Mac 上,准备好官方 sqlite3 命令行程序后,使用实际文件路径运行 `sqlite3 "database.sqlite"`。输入 `.tables` 查看表名,再用 SQL 查询已知表。先核对路径:指定的文件不存在时,sqlite3 会创建新数据库。在手机上,选择明确支持 SQLite 数据库文件的应用,打开副本而非原文件。复制或移动时,将主文件与关联的 -wal、-journal 文件放在一起。打不开时,文件可能已加密,也可能实际使用其他格式。
- 打开来源不明的 SQLite 数据库仍有风险,应在数据库副本上操作。恶意或畸形文件可能触发尚未发现的解析器缺陷;恶意数据库模式也可能诱使宿主应用调用其注册的自定义 SQL 函数或虚拟表,产生副作用或泄露特权信息。对于自行编写应用的读者,SQLite 官方建议采用连接后关闭 trusted_schema 等防护。标准 SQLite 3 文件不提供加密;能够打开或文件头匹配,都不能证明内容可信。
SQLite 数据库文件:识别、打开与转换
现行 SQLite 3 文件格式规范覆盖自 SQLite 3.0.0(2004 年 6 月 18 日)以来的版本。数据库通常保存在一个主文件中,可以跨大小端架构及 32 位、64 位系统传输。主文件前 100 字节是数据库头,各页面大小相同,页大小为 512 至 65536 字节之间的二次幂。.sqlite、.sqlite3 和 .db 都是常见后缀,但识别时应优先核对文件头,不能只看扩展名。
导出 CSV 时,在 sqlite3 中依次输入 `.headers on`、`.mode csv`、`.once result.csv`,再执行 SELECT 查询。CSV 只保存该查询的结果,不能保留完整数据库的索引、触发器和视图。需要可重建的 SQL 文本时,运行 `sqlite3 "database.sqlite" .dump > backup.sql`;恢复时运行 `sqlite3 "restored.sqlite" < backup.sql`。重定向输出前核对路径,避免覆盖已有输出文件。
怎么打开
在 Windows 或 Mac 上,准备好官方 sqlite3 命令行程序后,使用实际文件路径运行 `sqlite3 "database.sqlite"`。输入 `.tables` 查看表名,再用 SQL 查询已知表。先核对路径:指定的文件不存在时,sqlite3 会创建新数据库。在手机上,选择明确支持 SQLite 数据库文件的应用,打开副本而非原文件。复制或移动时,将主文件与关联的 -wal、-journal 文件放在一起。打不开时,文件可能已加密,也可能实际使用其他格式。
在 Windows 或 Mac 上,准备好官方 sqlite3 命令行程序后,使用实际文件路径运行 `sqlite3 "database.sqlite"`。输入 `.tables` 查看表名,再用 SQL 查询已知表。先核对路径:指定的文件不存在时,sqlite3 会创建新数据库。在手机上,选择明确支持 SQLite 数据库文件的应用,打开副本而非原文件。复制或移动时,将主文件与关联的 -wal、-journal 文件放在一起。打不开时,文件可能已加密,也可能实际使用其他格式。
导出 CSV 时,在 sqlite3 中依次输入 `.headers on`、`.mode csv`、`.once result.csv`,再执行 SELECT 查询。CSV 只保存该查询的结果,不能保留完整数据库的索引、触发器和视图。需要可重建的 SQL 文本时,运行 `sqlite3 "database.sqlite" .dump > backup.sql`;恢复时运行 `sqlite3 "restored.sqlite" < backup.sql`。重定向输出前核对路径,避免覆盖已有输出文件。
文件安全
打开来源不明的 SQLite 数据库仍有风险,应在数据库副本上操作。恶意或畸形文件可能触发尚未发现的解析器缺陷;恶意数据库模式也可能诱使宿主应用调用其注册的自定义 SQL 函数或虚拟表,产生副作用或泄露特权信息。对于自行编写应用的读者,SQLite 官方建议采用连接后关闭 trusted_schema 等防护。标准 SQLite 3 文件不提供加密;能够打开或文件头匹配,都不能证明内容可信。
来路不明、文件名带两个后缀,或者内容和扩展名对不上——先停下来核对。
转换格式
导出 CSV 时,在 sqlite3 中依次输入 `.headers on`、`.mode csv`、`.once result.csv`,再执行 SELECT 查询。CSV 只保存该查询的结果,不能保留完整数据库的索引、触发器和视图。需要可重建的 SQL 文本时,运行 `sqlite3 "database.sqlite" .dump > backup.sql`;恢复时运行 `sqlite3 "restored.sqlite" < backup.sql`。重定向输出前核对路径,避免覆盖已有输出文件。
先复制一份原文件再转换,转完对照看看画质、元数据和排版有没有变。
常见问题
SQLite 文件是什么,可以保存哪些内容?
SQLite 文件是 SQLite 引擎使用的数据库文件,可以保存表、索引、触发器和视图。通常有一个主文件;事务期间还可能存在属于数据库状态一部分的恢复文件。
Windows 怎么打开 SQLite 文件并查看表?
准备好官方 sqlite3 程序后,运行 `sqlite3 "C:\data\database.sqlite"`,再输入 `.tables` 查看表名。先确认文件路径存在,否则程序会创建新数据库。
Mac 怎么打开 SQLite 数据库?
在 sqlite3 可用的情况下,打开终端,运行 `sqlite3 "/path/database.sqlite"`。用 `.tables` 列出表,再执行 SQL 查询。先核对路径,避免误建新数据库。
手机怎么打开 SQLite 数据库?
选择明确支持 SQLite 数据库文件的应用,按其说明打开副本而非原文件。复制或移动时,将主文件与关联的 -wal、-journal 文件放在一起。打不开时,文件可能已加密,也可能实际使用其他格式,不能仅凭打开失败判断已损坏。
SQLite 数据库打不开怎么办,是否一定已损坏?
先检查路径和文件头,并保留关联的日志或 WAL 文件。文件可能实际使用其他格式,也可能依赖加密扩展。仅凭打不开,不能断定数据库已损坏。
共享数据时 SQLite 和 CSV 选哪个?
只需要某次查询的行列结果时,可以选择 CSV。需要保留数据库结构时,应选择 SQLite;单独导出 CSV 不能保留索引、触发器和视图。
SQLite 数据库怎么导出 CSV?
在 sqlite3 中依次输入 `.headers on`、`.mode csv`、`.once result.csv`,再执行 SELECT 查询。生成的 CSV 保存该查询结果,不是完整数据库。
SQLite 数据库怎么备份为 SQL 文件并恢复?
运行 `sqlite3 "database.sqlite" .dump > backup.sql` 导出可重建的 SQL 文本。恢复时运行 `sqlite3 "restored.sqlite" < backup.sql`。输出重定向前核对文件名,避免误覆盖。
打开陌生 SQLite 数据库安全吗?
不能一概保证安全,应在数据库副本上操作。畸形文件可能触发解析器缺陷,恶意模式也可能利用宿主应用注册的 SQL 函数或虚拟表。对于自行编写应用的读者,SQLite 官方建议在连接后关闭 trusted_schema。
SQLite 数据库旁边的 WAL 文件能删除吗?
不能直接当作无用附件删除。WAL 或回滚日志如果包含恢复数据库一致性所需的信息,就属于数据库状态的一部分;单独处理主文件时不能忽略它们。
DB 文件怎么判断是不是 SQLite 数据库,SQLite 数据库文件头是什么?
标准 SQLite 3 文件从偏移 0 开始的 16 字节是 `SQLite format 3` 加末尾 NUL。仅凭 .db 后缀无法确认格式;文件头匹配也不能证明文件安全或内容可信。
标准 SQLite 数据库文件默认加密吗?
不加密。标准 SQLite 3 文件格式不提供加密。加密数据库可能依赖 SQLite Encryption Extension 等扩展,需要相应支持,不能把普通 SQLite 文件当作已加密存储。
相关格式
资料来源
SQLite — Database File Format · SQLite official format specification
SQLite — Command Line Shell For SQLite · SQLite official usage documentation
SQLite — Defense Against The Dark Arts · SQLite official security documentation
SQLite, Version 3 · Library of Congress digital format description