题 如何验证SQLite db3文件是否有效/一致


我有一些sqlite版本3 db3文件我从一个实时运行的生产系统(我知道坏sysadmin坏sysadmin)复制出于各种原因。是否有一些我可以运行的sqlite命令将验证是否可以从这些文件中读取所有数据(我不介意它是否需要一段时间)。

我正在考虑攻击一些转储所有数据然后将其重新导入新文件的perl。我认为如果遇到损坏的数据,sqlite将抛出异常。有没有更好的办法?

我是CentOS 5.3和sqlite-3.3.6-2


18
2018-05-14 01:32






答案:


我想你想试试:

pragma integrity_check;

来自 文件

该pragma对整个数据库进行完整性检查。该   integrity_check pragma查找无序记录,丢失页面,   格式错误的记录,缺少索引条目以及UNIQUE和NOT NULL   约束错误。如果integrity_check编译指示发现问题,   返回字符串(作为多行,每行一列)   描述问题。 [...]

另见 PRAGMA quick_check 执行大部分操作的命令   检查PRAGMA integrity_check但运行速度更快。


28
2018-05-14 01:41



也可以看看 sqlite.org/faq.html#q21 - Teddy