我编写了一个XQuery表达式,其结果大约为50MB,需要花费几个小时来计算。我在BaseX GUI中执行它,但这有点不方便:它将结果裁剪到结果窗口,然后我必须保存。此时,BaseX无法响应并可能崩溃。
有没有办法直接将结果写入文件?
答案 0 :(得分:1)
查看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-binary
,file:write-text
和file:write-text-lines
函数。
另一种替代方法可能是写入数据库中的文档而不是文件。来自database module的db:add
和db:create
可用于将计算结果添加到当前或新数据库。