我愚蠢地删除了一个 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 数据库文件 恢复数据可能具有挑战性,但如果文件的结构仍然可识别,则可以手动提取数据。以下是有关如何尝试恢复数据的分步指南:
了解 SQLite 文件结构:SQLite 数据库由各个部分组成,包括标头、主表和各个表。了解此结构将帮助您浏览文件。
使用十六进制编辑器:利用十六进制编辑器检查恢复文件的内容。寻找可识别的模式,例如表名称、列名称和数据条目。
识别数据条目:既然您知道表格的结构(包含列
item
和 count
),请搜索与您的数据条目类似的模式。在您的情况下,条目似乎由控制字符(^B
、^N
、^M
等)分隔。
手动提取数据:识别数据条目后,手动提取它们。对于每个条目,您可以通过使用上下文线索并验证数据完整性来尝试识别条目边界、隔离项目和计数。此外,您可以仔细记录提取过程。根据您的要求,您可以选择将数据重建为新的 SQLite 数据库、格式化文本文件或其他适当的数据存储格式。
验证和重建:提取数据后,通过与任何其他可用来源交叉引用来验证其正确性。验证后,将数据重建为可用格式,例如新的 SQLite 数据库或结构化文本文件。
考虑专业帮助:如果手动恢复看起来过于复杂或耗时,请考虑寻求专业的数据恢复服务。他们可能拥有专门的工具和专业知识来更有效地处理此类情况。
注意: 请记住处理恢复文件的副本,以避免进一步损坏原始数据。此外,在继续恢复过程时,请彻底记录您的步骤和发现结果。