如何查询iTunes备份SQLite和Plist文件中的数据

更新
Cover image for: 如何查询iTunes备份SQLite和Plist文件中的数据

某些用户可能希望使用专家模式直接操作存储在其备份中的原始文件。这些通常由SQLite数据库( .sqlite3.sqllitedb.db )或Plist(通常是.plist )文件组成。

iPhone Backup Extractor包含一个内置的Plist编辑器,其用户可以自动将其数据导出为PDF,HTML,VCard,ICAL,VCF或CSV格式,以便于访问。但是,希望从这些文件中提取数据的用户需要一个SQLite数据库客户端。

我如何使用SQLite数据库?

用户可能想要尝试这两个应用程序中的任何一个:

  • SQLite的数据库浏览器 。数据库浏览器曾经被命名为SQLite数据库浏览器。这是我们推荐用于Windows的工具,它是免费的。他们还提供了适用于macOS的版本。
  • 基地2 。 Base是我们首选的适用于macOS的SQLite工具,可以直接下载并通过App Store应用程序获得

如何直接使用Apple的数据库文件?

例如,要手动访问联系人数据,用户应提取Libray/AddressBook/AddressBook.sqllitedb ,然后使用SQLite查看器打开提取的文件。选择“执行SQL”选项卡,将其粘贴到“SQL字符串”字段中:

SELECT ABPerson.first, ABPerson.last, ABMultiValue.value
FROM ABPerson, ABMultiValue
WHERE ABMultiValue.record_id = ABPerson.ROWID

按“执行查询”按钮应返回“返回的数据”字段中显示的完整联系人列表。

要访问SMS数据,用户应提取Libray/SMS/SMS.db ,使用SQLite查看器打开提取的文件,选择“浏览数据”选项卡,然后从“表”下拉列表中选择“消息”。单击放大镜按钮,用户应在“返回的数据”字段中看到其完整的SMS历史记录。

我们的其中一位用户发现以下查询很有帮助,因此我们将其包含在此处供我们的用户使用。请记住,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-011970-01-01以来的秒数,具体取决于日期字段的位置。在Excel中,您可以使用公式,例如=1/1/2001 + A1/60/60/24 ,其中A1是您的时间数据。您可能还需要调整值以考虑当地时区。

关于作者

Aidan Fitzpatrick在建立了世界上第一款iPhone数据恢复工具iPhone备份提取器之后于2008年创立了Reincubate。他曾在谷歌谈过企业家精神,并且是企业家组织领导力学院的毕业生。

Reincubate在白金汉宫的首席执行官

上图是Reincubate团队在白金汉宫会见英国女王伊丽莎白二世的成员,因为我们在Apple技术方面的工作获得了英国最高商业奖。阅读我们在隐私,安全和保障方面的立场。

我们能帮你什么吗?

我们的支持团队在这里提供帮助!

我们的办公时间是格林威治标准时间周一至周五上午9点至下午5点。 时间目前是 8:52 AM的 GMT。

我们力争在一个工作日内答复所有垂询。

转到支持部分 › 联系我们 ›
我们的支持团队非常棒

我们可以改进这篇文章吗?

我们喜欢听取用户的意见:为什么不给我们发电子邮件,发表评论或发推文 @reincubate?

© 2008 - 2019 Reincubate Ltd. 保留所有权利。 在英格兰和威尔士注册 #5189175, VAT GB151788978. Reincubate®是注册商标。 隐私权和条款. 我们推荐多因素认证。 在伦敦建立了爱情。