如何从iPhone备份SQLite和Plist文件查询数据

更新
Cover image for: 如何从iPhone备份SQLite和Plist文件查询数据

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

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

我如何使用SQLite数据库?

用户可能想尝试以下三个应用程序中的任何一个:

  • SQLiteFlow (付费,macOS和iOS)。 SQLiteFlow是我们选择的macOS SQLite工具。
  • Base 2 (付费,macOS)。 Base是我们用于macOS的第二受欢迎的SQLite工具之一,可以直接下载和App Store应用程序获得
  • SQLite的数据库浏览器 (免费,macOS和Windows)。数据库浏览器曾经被命名为SQLite数据库浏览器。这是我们推荐用于Windows的工具,它是免费的。他们还提供了适用于macOS的版本。

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

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

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

按下Execute Query按钮应返回“数据返回”字段中显示的完整联系人列表。

要访问SMS数据,用户应提取Libray/SMS/SMS.db ,使用SQLite查看器打开提取的文件,选择“ Browse data选项卡,然后从“ Table下拉列表中选择message 。单击放大镜按钮后,用户应在“返回的数据”字段中看到其完整的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是您的时间数据。您可能还需要调整值以考虑当地时区。

我们能帮你什么吗?

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

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

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

我们的支持团队非常棒

评论 (1)

You can use this to format the messages (SMS) date field:

datetime(date/1000000000 + 978307200,'unixepoch','localtime') as date

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

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

© 2008 - 2024 Reincubate Ltd. 保留所有权利。 在英格兰和威尔士注册 #5189175, VAT GB151788978. Reincubate®和Camo®是注册商标。 隐私政策 & 条款.