同事从系统里导出一个 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 工具试开,读不出来再按来源软件的格式找对应工具,别拿十六进制编辑器硬改。