我有一些 sqlite version3 db3 文件,这些文件是出于各种原因从正在运行的生产系统中复制而来的(我知道坏的系统管理员是坏的系统管理员)。是否有一些 sqlite 命令可以运行,以验证是否可以从这些文件中读取所有数据(我不介意花点时间)。
我正在考虑破解一些 perl,以便转储所有数据,然后将其重新导入到新文件中。我认为如果遇到损坏的数据,sqlite 会抛出异常。有没有更好的方法?
我是 CentOS 5.3 和 sqlite-3.3.6-2
答案1
我想你想尝试:
pragma integrity_check;
来自文档:
此指令对整个数据库进行完整性检查。integrity_check 指令查找无序记录、缺失页面、格式错误的记录、缺失索引条目以及 UNIQUE 和 NOT NULL 约束错误。如果 integrity_check 指令发现问题,则返回描述问题的字符串(多行,每行一列)。[...]
另请参阅PRAGMA quick_check该命令完成了 PRAGMA integrity_check 的大部分检查,但运行速度更快。