同事从系统里导出一个 db文件,名字叫 data.db,双击只弹出「你要如何打开这个文件」,装了 Office 也没认出来。

db 只是 database 的缩写,是个通用后缀,SQLite、Access、各种客户端软件都可能用它。光看名字判断不了类型,得看文件本身。

三步看出是哪家的库

  • 看大小,几 KB 到几十 MB 居多的是 SQLite,几百 MB 可能是导出的大库
  • 用记事本打开前几十个字符,开头出现 SQLite format 3 基本就是 SQLite
  • 问发送方是从哪个软件导出的,这一步最省事

Linux 下更省事,file data.db 会直接报 SQLite 3.x database。Windows 没有这个命令,看文件头也够用。

SQLite 文件怎么读

装一个 DB Browser for SQLite,免费的,打开后左边列数据库,右边看表结构和数据,还能执行 SQL。命令行也行:sqlite3 data.db,进去后输入 .tables 看有哪些表。打开时尽量选只读,避免手滑改了数据。

如果这个 db 是某个软件正在使用的数据文件,直接改可能让软件打不开。先退出软件,再复制一份到桌面操作,是最稳的做法。

表多的时候先看 sqlite_master 这张系统表,里面记录所有表名和建表语句。字段含义只能靠表名和样例数据猜,别急着改。右键查看数据,前几十行就能看出每个字段大概存什么。

不是所有 db 都是 SQLite

Access 的扩展名是 mdb 或 accdb,和 db 不是一回事;MySQL 数据目录里的 ibd 文件离开同版本实例基本读不了;还有些软件把配置加密后存成 db,打开只是乱码。文件名一样,内里差别很大。

另外有一种情况:文件其实是 SQL Server 的备份或某个客户端的数据包,只是被改了后缀。问清来源,比装一堆工具挨个试快。

动之前先复制一份

把文件复制到别的目录再操作。原文件被程序占用时改不动,先把对应软件关掉。真要修数据,先备份,再在副本上试。

实际操作顺序:能问到来源就问,问不到先用 SQLite 工具试开,读不出来再按来源软件的格式找对应工具,别拿十六进制编辑器硬改。