您可能知道或者可能不知道,当从SQLite文件中删除数据时,它仍然保留在文件中。它可以使用十六进制编辑器查看,但不会显示在SQLite或任何SQLite查看器中。
如何提取此数据以使其仍然清晰可辨?我正在考虑某种perl脚本,但如果SQLite看不到数据,我只能在十六进制编辑器中看到它,我不知道该怎么做。
有什么想法吗?
谢谢:)
答案 0 :(得分:0)
如果sqlite看不到行,那么你需要自己解析原始文件格式。这并不容易。
有一种商业工具可以做到epilog - 不知道它有多好或有多好。可能值得你。
如果不这样做,您需要自己解析文件格式。一些提示是here或者您可能想要破解sqlite代码本身,看看是否可以让它忽略所有已删除的标记。
哦 - 如果你清空db文件,它实际上会删除已删除的行,所以不要。
答案 1 :(得分:0)
您可以将 HexDump 包用于Perl
以下代码将十六进制打印到屏幕,其中 FooFile 是sqllite文件的路径:
use Data::HexDump;
my $f = new Data::HexDump;
$f->file("FooFile");
$f->block_size(1024);
print while $_ = $f->dump;