如何修复 Berkeley DB 文件中不正确的 XML 标签

Posted

技术标签:

【中文标题】如何修复 Berkeley DB 文件中不正确的 XML 标签【英文标题】:How to fix incorrect XML tags in a Berkeley DB file 【发布时间】:2012-05-14 21:44:48 【问题描述】:

我有一个 Berkeley DB 文件,它的记录中有一些数据已损坏。

记录包含xml,xml标签不正确。

在其中一条记录中包含:

"<modifications></modificatio"

我如何编辑这条记录来解决这个问题

"<modifications></modifications>"

【问题讨论】:

您的 berkely db 文件没有损坏(这是您的标题所暗示的)。请编辑问题,详细说明此 xml 记录具体出了什么问题。 Thks 希望这更具体。 文件有多大?如果您只是缺少三个字符,您可以交互地使用编辑器的查找和替换命令来修复您的文件。 我用文本编辑器修复了它,但是你得到以下错误:“bsddb.db.DBInvalidArgError in /usr/lib/python2.4/bsddb/__init__.py:298 in hashopen: (22 , '无效参数 -- /price_arrivaldate.db: 文件大小不是页面大小的倍数')" 不,您不能使用文本编辑器将字符添加到二进制数据库文件。我希望你保留一个备份。 【参考方案1】:

Berkeley 数据库文件是一个二进制文件,其中包含由应用程序放置的数据库记录。

您通常会首先使用您用来生成文件的任何工具“编辑”文件。如果这对您不可用,最简单的解决方案可能是使用db_dumpdb_load 命令。

db_dump 命令将数据库转换为文本格式,如下所示:

$ db_dump my_broken_database
format=print
type=hash
h_nelem=77
db_pagesize=4096
HEADER=END
 key1\00
 this is a value\00
 key2\00
 this is another value\00
DATA=END

您可以将其转储到文件中...

$ db_dump my_broken_database > data.txt

...并使用您最喜欢的文本编辑器进行编辑。完成编辑后,将其提供给 db_load 以重新生成数据库:

$ db_load my_fixed_database < data.txt

【讨论】:

以上是关于如何修复 Berkeley DB 文件中不正确的 XML 标签的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 读取 Berkeley DB 文件?

如何读取现有的 jdb 文件 java berkeley db

如何在不记录/写入 __db.00x 文件的情况下使用 Berkeley Db 事务?

如何跟踪存储在 Oracle Berkeley DB XML 中的文件的更改

如何从 berkeley db 转储特定的颠覆路径?

Berkeley DB 错误:无法锁定 je.lck 文件