Запись непосредственно в файл из графического интерфейса BaseX

Я написал выражение XQuery, которое имеет большой результат около 50 МБ, и его вычисление занимает пару часов. Я выполняю его в графическом интерфейсе BaseX, но это немного неудобно: он обрезает результат в окно результатов, которое потом нужно сохранить. В это время BaseX перестает отвечать на запросы и может выйти из строя.

Есть ли способ напрямую записать результат в файл?


person wvdz    schedule 17.03.2016    source источник


Ответы (1)


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

Для вас особый интерес будет представлять file:write($path as xs:string, $items as item()*) as empty-sequence(), позволяющий записать последовательность элементов в файл. Например:

file:write(
  '/tmp/output.xml',
  <root>{
    for $i in 1 to 1000000
    return <some-large-amount-of-data />
  }</root>
)

Если ваш вывод не является правильно сформированным XML, рассмотрите функции file:write-binary, file:write-text и file:write-text-lines.

Еще одной альтернативой может быть запись в документы в базе данных вместо файлов. db:add и db:create из модуля базы данных можно использовать для добавления вычисленных результатов к текущему или новая база данных.

person Jens Erat    schedule 17.03.2016
comment
Спасибо, это идеально. - person wvdz; 18.03.2016