从 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-binary
、file:write-text
和 file:write-text-lines
函数。
另一种选择可能是写入数据库中的文档而不是文件。 database module 中的 db:add
和 db:create
可用于将计算结果添加到当前或新数据库中。
我写了一个 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-binary
、file:write-text
和 file:write-text-lines
函数。
另一种选择可能是写入数据库中的文档而不是文件。 database module 中的 db:add
和 db:create
可用于将计算结果添加到当前或新数据库中。