marklogic 8 : 调度 Xquery 提取

marklogic 8 :Schedule Xquery extraction

我目前正在使用 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 中安排此提取并将其 运行 放在后台,以避免在请求执行时间过长时超时。

是否有类似的功能可以做到这一点?

此致, 罗曼.

您可以使用 task scheduler 设置循环执行脚本。

可以在脚本中使用 xdmp:set-request-time-limit

调整超时

我建议你也看看 MLCP

根据 Mads 的建议,像 CORB 这样的工具可以帮助从 MarkLogic 中提取 csv 数据。

迈克尔建议的时间表可以触发定期导出,并将输出保存到磁盘,或通过 HTTP 将其推送到其他地方。不过,在这种情况下,我会研究 运行ning 增量导出,并且我还建议将事情分批处理。在大型集群中,我什至建议将导出分块为每个林或每个连接内容林的主机。计划任务允许针对特定主机,它们应该 运行.

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

HTH!