2017-08-10 83 views
1

我目前使用XQuery查询(通过API推出)从Marklogic提取8.0.6/marklogic 8:计划的Xquery提取

查询我的文件extract_data.xqy

xdmp:save("toto.csv",let $nl := "
" 

return 
document { 

for $data in collection("http://book/polar") 
return ($data) 
}) 

API调用:

$curl --anyauth --user ${MARKLOGIC_USERNAME}:${MARKLOGIC_PASSWORD} -X POST -i -d @extract_data.xqy \ 
       -H "Content-type: application/x-www-form-urlencoded" \ 
       -H "Accept: multipart/mixed; boundary=BOUNDARY" \ 
       $node:$port/v1/eval?database=$db_name 

它工作正常,但我想直接在marklogic安排此提取物,并将它在后台运行,以避免超时如果再任务需要太多时间才能执行。

是 - 有这样的功能吗?

Regards, Romain。

+1

CORB非常适合生成CSV输出,特别是当URI的数量可能非常大时。它将列表拆分并将每个URI作为单独的模块执行进行处理,因此您不必担心超时.https://github.com/marklogic-community/corb2#sample-5---report-generates-一个单文件与 - 数据从处理 - 每个-URI –

回答

0

正如Mads所建议的,CORB这样的工具可以帮助将csv数据从MarkLogic中提取出来。

Michael建议的计划可以触发定期导出,并将输出保存到磁盘或通过HTTP将其推送到其他位置。尽管如此,我会考虑在这种情况下运行增量出口,并且我也建议分批处理。在一个大集群中,我甚至建议将导出分为每个森林的批次或每个附加内容森林的主机。计划任务允许针对其运行的特定主机。

您还可以运行adhoc导出,特别是在使用类似taskbot的工具批量处理工作时。如果将它与OPTIONS-SYNC-UPDATE模式结合使用,则可以将多个批次合并到一个结果文件中,然后再发布它,并获得更好的性能,与单线程运行相比。合并结果不会无限缩放,但如果您的数据集相对较小(可能只有几百万条小记录),那可能就足够了。

HTH!