如何从已部分覆盖的恢复的sqlite数据库文件中恢复数据?

问题描述 投票:0回答:1

我愚蠢地删除了一个 sqlite 文件,其中包含一些我希望恢复的数据。

我能够成功恢复数据库文件,但它似乎被部分覆盖,但是当我检查文件时,我想要恢复的绝大多数数据仍然存在。

我在sqlite3中尝试过

.recover
,但它没有恢复数据。我尝试过使用该工具
undark
,但它也不起作用。我最好的选择是手动取消数据,但我找不到具体如何执行此操作的参考。我使用过的恢复工具都不起作用。

数据格式非常简单,建表语句为:

CREATE TABLE IF NOT EXISTS  stats (item TEXT UNIQUE, count INT);

我可以看到恢复文件中的数据(用vim打开)在那里(它是购物清单数据)。这是一个片段:

<86>X^B^]cucumber       <86>W^B^[sachets^G<86>Q^B^Wbread^L®^@b^Ypaneer^LQ^@^U^N<86>U^B%goats cheese^K<86>B^B^_rinse a^G<86>m^B^Wbread^Mý^A<9d>^Upeas^Mý^A<94>#baked beans^Mý^A<84>)chicken breast
<86>i^B^]mint tea^O<86>h^B'chilli flakes^G<86>g^B^Wpolos^Mý^AH#raspberries^Q<86>e^B+cherry tomatoes^N<86>d^B%single cream^M9^@/^_aubergine^M9^@!^[spinach^R<86>a^B-butternut squash
<86>`^B^]oat milk^W<86>_^B7white chocolate chips^Mc^@^N^_mushrooms      <86>]^B^[carrots^M<86>1^B#boy ^Mî^@i/semi skimmed milk^Mî^@S^[carrots
<83>^Z^B^]parsnips^H<83>^W^B^Ycheese^Mî^@/#cauliflower^Mø^@^K^Yapples^Q<83>^S^B+unsalted bu^N<83> ^B%kitchen roll^M<83>^_^B#lemon juice^N4^@
^[c^O<83>"^B^K<83>$^B^_oaty bars^N<83>^^^B%basmati rice^T<82>x^B1first class stamps^O<82>t^B'fine sea salt^NF^@

我尝试使用十六进制编辑器打开文件,但我不知道如何获取我需要的结构化数据(每个项目的

count
)。

如何从此文件中恢复数据?我很高兴手动执行此操作,只有 ~100 个项目,但我不知道如何从此文件中检索整数

count
值。

sqlite recovery
1个回答
0
投票

从部分覆盖的 SQLite 数据库文件 恢复数据可能具有挑战性,但如果文件的结构仍然可识别,则可以手动提取数据。以下是有关如何尝试恢复数据的分步指南:

  1. 了解 SQLite 文件结构:SQLite 数据库由各个部分组成,包括标头、主表和各个表。了解此结构将帮助您浏览文件。

  2. 使用十六进制编辑器:利用十六进制编辑器检查恢复文件的内容。寻找可识别的模式,例如表名称、列名称和数据条目。

  3. 识别数据条目:既然您知道表格的结构(包含列

    item
    count
    ),请搜索与您的数据条目类似的模式。在您的情况下,条目似乎由控制字符(
    ^B
    ^N
    ^M
    等)分隔。

  4. 手动提取数据:识别数据条目后,手动提取它们。对于每个条目,您可以通过使用上下文线索并验证数据完整性来尝试识别条目边界隔离项目和计数。此外,您可以仔细记录提取过程。根据您的要求,您可以选择将数据重建为新的 SQLite 数据库、格式化文本文件或其他适当的数据存储格式。

  5. 验证和重建:提取数据后,通过与任何其他可用来源交叉引用来验证其正确性。验证后,将数据重建为可用格式,例如新的 SQLite 数据库或结构化文本文件。

  6. 考虑专业帮助:如果手动恢复看起来过于复杂或耗时,请考虑寻求专业的数据恢复服务。他们可能拥有专门的工具和专业知识来更有效地处理此类情况。

注意: 请记住处理恢复文件的副本,以避免进一步损坏原始数据。此外,在继续恢复过程时,请彻底记录您的步骤和发现结果。

© www.soinside.com 2019 - 2024. All rights reserved.