marklogic 8:计划Xquery提取

时间:2017-08-10 13:35:37

标签: xquery marklogic marklogic-8

我目前正在使用Xquery查询(通过API启动)从Marklogic 8.0.6中提取/

在我的文件中查询 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中安排这个提取,并让它在后台运行,以避免在请求花费太多时间执行时超时。

是否有这样的功能?

此致 罗曼。

2 个答案:

答案 0 :(得分:4)

您可以使用task scheduler设置重复执行脚本。

可以使用xdmp:set-request-time-limit

在脚本中调整超时

我建议你也看看MLCP

答案 1 :(得分:0)

根据Mads的建议,像CORB这样的工具可以帮助将csv数据从MarkLogic中拉出来。

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

您还可以运行adhoc导出,尤其是在使用taskbot等工具批量处理工作时。如果将它与OPTIONS-SYNC-UPDATE模式结合使用,您可以在发布之前将多个批次合并回一个结果文件,并且与单线程运行相比,可以获得更好的性能。合并结果不会无限扩展,但如果你有一个相对较小的数据集(可能只有几百万个小记录),那就足够了。

HTH!