2016-04-23 200 views
1

我已經從格式化的硬盤恢復數據用於訴訟。數據是Skype日誌,存儲在SQLite3數據庫中。不幸的是,磁盤被格式化並且在驅動器上安裝了新的OS X副本。我掃描了驅動器並找到了我正在查找的文件,但似乎我後面的數據庫已損壞。如何從損壞的SQLite3數據庫恢復數據?

我嘗試下面的命令,我發現通過這樣搜索上:

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

不幸的是,反傾銷這種方式排除了我要找的(信息)記錄的表。由於我可以通過使用另一個帳戶登錄併爲其生成一個新的main.db來從Skype獲取數據庫的格式,我是否有任何其他選項可用於提取損壞的數據庫的內容?否則,有沒有辦法在文本文件中導出數據庫的原始內容?我只關心抓取某些訊息,我可以搜索。

+0

1.從[raw DB文件](http://www.sqlite.org/fileformat2.html)中提取數據,手動; 2.花很多錢給其他人這樣做。 –

+0

爲什麼當我在文本編輯器中打開.db文件時,有些文本是可見的,但它主要是問號?我可以搜索一些東西,但大部分消息似乎無法通過這種方式搜索。 – GoldenJoe

+0

存儲在數據庫文件中的數據格式在我鏈接到的文檔中進行了解釋。 –

回答

3

當數據庫損壞時,「.dump」命令會提取所有可用信息,但會以ROLLBACK結尾,因爲它遇到損壞。

相反,輸出存儲在一個文件中:

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

然後,你可以直接在該文件中查看數據,也可以使用文本改變從「回滾」到「提交」最後一行編輯。之後,您可以使用以下方法將數據的有效部分加載到數據庫中:

$ sqlite3 new.db < mydata.dump