Expert mode を使って、バックアップに保存されている生のファイルを直接操作したいユーザーもいます。これらのファイルは、多くの場合 SQLite データベース(.sqlite3、.sqllitedb、.db)または Plist(通常は .plist)ファイルです。
iPhone Backup Extractor には Plist エディタが組み込まれており、ユーザーはデータを PDF、HTML、VCard、ICAL、VCF、CSV 形式に自動的にエクスポートして、簡単に利用できます。ただし、これらのファイルからデータを取り出したい場合は、SQLite データベースクライアントが必要です。
SQLite データベースを操作するにはどうすればよいですか?
次の 3 つのアプリケーションのいずれかを試してみるとよいでしょう。
- SQLiteFlow(有料、macOS / iOS)。SQLiteFlow は、macOS 向けの SQLite ツールとして当社が最も推奨するものです。
- Base 2(有料、macOS)。Base は、macOS 向けの SQLite ツールとして当社が 2 番目に気に入っているものの 1 つで、直接ダウンロードするか、App Store アプリ として入手できます。
- DB Browser for SQLite(無料、macOS / Windows)。DB Browser は以前は SQLite Database Browser という名前でした。Windows 向けの推奨ツールで、無料です。macOS 版も提供されています。
この情報は信頼できますか?
Reincubate は、これらの製品のいずれとも提携しておらず、これらを紹介することで報酬を受け取ってもいません。
Apple のデータベースファイルを直接操作するにはどうすればよいですか?
たとえば、連絡先データに手動でアクセスするには、Libray/AddressBook/AddressBook.sqllitedb を取り出し、取り出したファイルを SQLite ビューアで開きます。「Execute SQL」タブを選び、「SQL string」フィールドに次を貼り付けます。
SELECT ABPerson.first, ABPerson.last, ABMultiValue.value
FROM ABPerson, ABMultiValue
WHERE ABMultiValue.record_id = ABPerson.ROWID
Execute Query ボタンを押すと、「Data returned」フィールドに連絡先の全リストが表示されるはずです。
SMS データにアクセスするには、Libray/SMS/SMS.db を取り出し、取り出したファイルを SQLite ビューアで開いて Browse data タブを選び、Table ドロップダウンから message を選択します。虫眼鏡ボタンをクリックすると、「Data returned」フィールドに SMS の全履歴が表示されるはずです。
ユーザーの 1 人が、次のクエリが役に立ったと教えてくれたため、ほかのユーザーのためにここに掲載します。データベースの形式は iOS のバージョンによって変わるため、これらのクエリも時間の経過とともに変更が必要になることが多い点にご注意ください。
SELECT ROWID,
ABPerson.first,
ABPerson.last,
ABPerson.Organization AS organization,
ABPerson.Department AS department,
DATETIME(ABPerson.Birthday + STRFTIME('%s', '2001-01-01 00:00:00'), 'unixepoch', 'localtime') AS Birthday,
ABPerson.JobTitle as jobtitle,
ABPerson.Organization,
ABPerson.Department,
ABPerson.Note,
ABPerson.Nickname,
DATETIME(ABPerson.CreationDate + STRFTIME('%s', '2001-01-01 00:00:00'), 'unixepoch', 'localtime') AS Created,
DATETIME(ABPerson.ModificationDate + STRFTIME('%s', '2001-01-01 00:00:00'), 'unixepoch', 'localtime') AS Modified,
( SELECT value FROM ABMultiValue
WHERE property = 3 AND record_id = ABPerson.ROWID AND label = (
SELECT ROWID FROM ABMultiValueLabel
WHERE value = '_$!<Work>!$_'
)
) AS phone_work,
( SELECT value FROM ABMultiValue
WHERE property = 3 AND record_id = ABPerson.ROWID AND label = (
SELECT ROWID FROM ABMultiValueLabel
WHERE value = '_$!<Mobile>!$_'
)
) AS phone_mobile,
( SELECT value FROM ABMultiValue
WHERE property = 3 AND record_id = ABPerson.ROWID AND label = (
SELECT ROWID FROM ABMultiValueLabel
WHERE value = '_$!<Home>!$_'
)
) AS phone_home,
( SELECT value FROM ABMultiValue
WHERE property = 4 AND record_id = ABPerson.ROWID AND label IS null
) AS email,
( SELECT value FROM ABMultiValueEntry
WHERE parent_id IN (
SELECT ROWID FROM ABMultiValue WHERE record_id = ABPerson.ROWID
) AND key = (
SELECT ROWID FROM ABMultiValueEntryKey WHERE lower(value) = 'street'
)
) AS address,
( SELECT value FROM ABMultiValueEntry
WHERE parent_id IN (
SELECT ROWID FROM ABMultiValue WHERE record_id = ABPerson.ROWID
) AND key = (
SELECT ROWID FROM ABMultiValueEntryKey WHERE lower(value) = 'city'
)
) AS city
FROM ABPerson
ORDER BY ABPerson.first
さまざまなアプリの主要ファイル の一覧をここで管理しています。
日付と時刻のフィールドが数値で返ってきます。どう解釈すればよいですか?
データベース内の多くのフィールドは、解釈が難しいかもしれません。iPhone Backup Extractor なら、データを自動的に取り出せることをお忘れなく。ただし、ご自身で作業する場合、日付は、日付フィールドの位置に応じて、2001-01-01 または 1970-01-01 からの秒数で表されています。Excel では、=1/1/2001 + A1/60/60/24 のような数式を使えます(A1 は時刻データです)。ローカルのタイムゾーンに合わせて値を調整する必要がある場合もあります。
