从 BaseX GUI 直接写入文件

Write directly to file from BaseX GUI

我写了一个 XQuery 表达式,它有大约 50MB 的大结果,需要几个小时来计算。我在 BaseX GUI 中执行它,但这有点不方便:它会将结果裁剪为结果 window,然后我必须保存它。这时候BaseX会没有反应,可能会崩溃。

有没有办法直接将结果写入文件?

看看 BaseX' file module,它提供了从文件读取和写入以及遍历文件系统的广泛功能。

对您来说,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-binaryfile:write-textfile:write-text-lines 函数。

另一种选择可能是写入数据库中的文档而不是文件。 database module 中的 db:adddb:create 可用于将计算结果添加到当前或新数据库中。