如何修复 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_dump
和db_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 事务?