如何将多个文档放入 Berkeley-DB XML 容器?

Posted

技术标签:

【中文标题】如何将多个文档放入 Berkeley-DB XML 容器?【英文标题】:How to put multiple documents into Berkeley-DB XML container? 【发布时间】:2011-05-03 08:09:35 【问题描述】:

我有一个包含一堆 XML 文档的目录,并希望将它们全部放入一个容器中。 换句话说,我需要做这样的事情:

dbxml> putDocument tests/*.xml

我已经编写了一个 GUI 程序来执行此操作,但是主机服务器没有安装 X-windows,所以必须在命令行中。

【问题讨论】:

【参考方案1】:

在将某些 XML 文档重新加载到我当前的应用程序数据库中时,我会做类似的事情。如果所有文件共享一个共同的命名约定,它会有所帮助。在 python 中,您可以使用以下脚本将 doc001.xml 添加到 doc009.xml:

from bsddb3.db import *
from dbxml import *

#Load source files 001 - 009

sourceDir = 'C:/directory-containing-xml-docs'
fileRange = range(1,10)

for x in fileRange:
    mycontainer = mymgr.openContainer("myDB.dbxml")    
    xmlucontext = mymgr.createUpdateContext()    
    xmlinput = mymgr.createLocalFileInputStream(sourceDir + "doc00" + str(x) + ".xml")    
    mycontainer.putDocument("doc00" + str(x) + ".xml", xmlinput, xmlucontext)
    print 'Added: ' + str(x)   
    del mycontainer

print '1 - 9 Added'

希望有帮助

【讨论】:

【参考方案2】:

您可以让一个 shell 脚本将 XML 文件列表写入另一个文件,然后使用 -f 选项调用 dbxml_load_container。

【讨论】:

【参考方案3】:

最终使用了一个列出文件并将所有内容放入数据库的脚本。

【讨论】:

以上是关于如何将多个文档放入 Berkeley-DB XML 容器?的主要内容,如果未能解决你的问题,请参考以下文章

Berkeley-DB:多个数据库上的原子事务

如何在 XML 文档中包含 & 字符?

在哪里存储身份验证令牌(前端)以及如何将其放入多个端点的 http 标头中?

如何完全解析 XML 文档中的所有内容?

如何从此 xml 文档中提取数据

Flutter & Firebase 将 10 多个 Firebase 文档放入 Stream<List<Map>>