如何从损坏的SQLite3数据库中恢复数据?

时间:2016-04-23 05:57:49

标签: sqlite

我从格式化的硬盘中恢复数据,用于诉讼。数据是Skype日志,存储在SQLite3数据库中。不幸的是,磁盘已格式化,并且驱动器上安装了新的OS X副本。我扫描了驱动器并找到了我要查找的文件,但似乎我所追踪的数据库已损坏。

我尝试了通过搜索SO找到的以下命令:

$ sqlite3 mydata.db ".dump" | sqlite3 new.db

不幸的是,以这种方式转储会排除我正在寻找的记录表(消息)。由于我可以通过登录另一个帐户并为其生成新的main.db来从Skype获取数据库的格式,我是否有任何其他选项来提取损坏的数据库的内容?如果失败了,有没有办法在文本文件或其他东西中导出数据库的原始内容?我只关心抓取某些消息,我可以搜索。

2 个答案:

答案 0 :(得分:4)

当数据库损坏时," .dump"命令提取所有可用信息,但随后以ROLLBACK结束,因为它遇到了损坏。

而是将输出存储在文件中:

$ sqlite3 mydata.db ".dump" > mydata.dump

然后,您可以直接在该文件中查看数据,或者您可以更改" ROLLBACK"中的最后一行。到" COMMIT"使用文本编辑器。之后,您可以使用以下命令将数据的有效部分加载到数据库中:

$ sqlite3 new.db < mydata.dump

答案 1 :(得分:1)

首先在命令控制台中检查PRAGMA完整性检查,然后单击“播放”按钮,记下错误并分别进行修复,或者尝试将SQL文件导出,然后将其导入新数据库并重新启动数据库,通常会删除存储在其中的段文件缓存。如果上述方法无效,则可以尝试使用SQLite数据库恢复工具https://www.recoveryandmanagement.com/repair-sqlite-database-manually/