Как поместить несколько документов в XML-контейнер Berkeley-DB?

#berkeley-db-xml

#berkeley-db-xml

Вопрос:

У меня есть каталог с кучей XML-документов, и я хочу поместить их все в контейнер. Другими словами, мне нужно сделать что-то вроде этого:

 dbxml> putDocument tests/*.xml
  

Для этого я написал программу с графическим интерфейсом, но на главном сервере не установлена 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:

Вы могли бы использовать сценарий оболочки для записи списка XML-файлов в другой файл, а затем вызвать dbxml_load_container с опцией -f.

Ответ №3:

В итоге я использовал скрипт, который перечисляет файлы и помещает все в базу данных.