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

hel*_*oel 27 linux sql database sqlite

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

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

我是 CentOS 5.3 和 sqlite-3.3.6-2

小智 36

我想你想尝试:

pragma integrity_check;
Run Code Online (Sandbox Code Playgroud)

文档

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

另请参阅PRAGMA quick_check命令,该命令执行 PRAGMA 完整性检查的大部分检查,但运行速度要快得多。

  • 另见 http://www.sqlite.org/faq.html#q21 (3认同)