1

你可能知道也可能不知道,当从 SQLite 文件中删除数据时,它仍然保留在文件中。它可以使用十六进制编辑器查看,但不会显示在 SQLite 或任何 SQLite 查看器中。

如何提取这些数据以使其仍然清晰易读?我正在考虑某种 perl 脚本,但如果 SQLite 看不到数据并且我只能在十六进制编辑器中看到它,我不知道该怎么做。

有任何想法吗?

谢谢 :)

4

2 回答 2

0

如果 sqlite 看不到这些行,那么您需要自己解析原始文件格式。这并不容易。

有一个商业工具可以做到Epilog - 不知道它有多好或它工作得如何。对你来说可能是值得的。

否则,您需要自己解析文件格式。这里有一些提示,或者您可能想破解 sqlite 代码本身,看看您是否可以让它忽略任何已删除的标记。

哦 - 如果你清理 db 文件,它实际上会删除已删除的行,所以不要。

于 2012-04-12T13:21:03.580 回答
0

你可以使用 Perl 的HexDump

以下代码会将十六进制打印到屏幕上,其中FooFile是您的 sqllite 文件的路径:

use Data::HexDump;

my $f = new Data::HexDump;
$f->file("FooFile");
$f->block_size(1024);
print while $_ = $f->dump;
于 2012-04-17T04:00:34.567 回答