如何为搁置数据库重新创建 'dir'

How can I recreate 'dir' for shelve db

我每天都将数据存储到一个搁置文件中。今天我发现最后几把钥匙不见了。 dat 文件的大小没有改变。 dir 文件和 bak 文件包含除最后一些键之外的所有键。我怎样才能重新创建这些文件,或者我怎样才能重新扫描我的 dat 文件并恢复所有存储的项目?

我用十六进制编辑器和手解决了我的问题。有简单的步骤:

  1. 用十六进制编辑器打开 dat 文件。

  2. 打开我们的目录文件

  3. 查找数据偏移量。它应该是 0。这是偏移量 1。Fig 1

  4. 找到十个零的块并找到该块开头的偏移量。这是偏移量 2。Fig 2

  5. 从偏移量 2 中减去偏移量 1。在我的例子中是 71768182 - 0 = 71768182。这是数据长度。

  6. 我们应该写入目录文件: '1', (0, 71768182)

    • 1 - 我们数据库中此项的键。

    • 0 - 起始数据块的偏移量

    • 71768182 - 数据块的长度;

  7. 转到新数据块的开始。 Fig 3

  8. 转到第 3 步