将uris输出在控制台上保存到文件系统

时间:2018-09-12 15:38:10

标签: marklogic

如何将结果从qconsole保存到输出文件。 output.txt在下面的每一行中将具有名称uri。我有上千个文件。

 Caltech.xml
 CGU.xml
 GMU.xml
 Hopkins.xml
 Georgetown.xml
 ....

let $uris:= cts:uris(
        (),
        (),
        cts:and-query(( cts:collection-query("/Universities/")))

    )

let $quote:=
   for $u in $uris
   return 
       fn:substring-after($u,"/Universities/")

let $output:=
text {
fn:concat(
    fn:string-join(($quote),","),
    "
"
 )

}  
return xdmp:save(fn:concat("/09122018/output.txt") ,$output) 

2 个答案:

答案 0 :(得分:4)

不要字符串连接和concat创建一个大字符串。取而代之的是,将多个字符串作为文本节点上交,包装在传递到xdmp:save的文档节点中。您可以轻松地以这种方式处理几百万个文档(只要您愿意等待一分钟)。另请参阅:https://stackoverflow.com/a/52005868/918496

如果您需要扩展,请按照Rob的建议查看Corb2

HTH!

答案 1 :(得分:3)

您可以使用xdmp:save将文件写入MarkLogic Server正在使用的文件系统。

对于QConsole无法处理的数据集,我建议您查看CORB