2016-04-23 45 views
1

フォーマット済みのハードドライブから訴訟で使用するためにデータを復元しました。データはSkypeのログで、SQLite3のデータベースに保存されています。残念ながら、ディスクはフォーマットされ、OS Xの新しいコピーがドライブにインストールされました。私はドライブをスキャンし、私が探しているファイルが見つかりましたが、それは私が後になっているデータベースが壊れているようです。残念ながら、この方法を投棄することは、私は(メッセージ)を探していたレコードのテーブルを除外破損したSQLite3データベースからデータを復元する方法は?

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

は私がSOで検索して見つけ、次のコマンドを試してみました。別のアカウントでログインして新しいmain.dbを生成するだけで、SkypeからDBのフォーマットを取得できるので、破損したDBの内容を抽出するための追加オプションがありますか?それに失敗した場合、データベースの生の内容をテキストファイルなどに書き出す方法はありますか?私は検索できる特定のメッセージをつかむだけです。

+0

1. [raw DBファイル](http://www.sqlite.org/fileformat2.html)からデータを抽出します。手動で; 2.これを行うために他の人にたくさんのお金を払う。 –

+0

テキストエディタで.dbファイルを開いたときに、一部のテキストが表示されるのはなぜですか?それは主に疑問符ですか?私はいくつかのものを検索することができますが、メッセージの大半はこのように検索可能ではないようです。 – GoldenJoe

+0

DBファイルに保存されているデータのフォーマットについては、リンク先のドキュメントで説明しています。 –

答えて

3

データベースが壊れている場合、 ".dump"コマンドは使用可能なすべての情報を抽出しますが、破損したためにROLLBACKで終了します。あなたがそのファイル内のデータを直接見ることができ、その後

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

、またはテキストを使用して「ROLLBACK」「コミット」するから最後の行を変更することができます。

代わりに、ファイルに出力を保存します編集者。その後、有効なデータ部分をデータベースにロードすることができます。

$ sqlite3 new.db < mydata.dump 
関連する問題