我目前正在使用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中安排这个提取,并让它在后台运行,以避免在请求花费太多时间执行时超时。
是否有这样的功能?
此致 罗曼。
答案 0 :(得分:4)
答案 1 :(得分:0)
根据Mads的建议,像CORB这样的工具可以帮助将csv数据从MarkLogic中拉出来。
Michael建议的计划可以触发定期导出,并将输出保存到磁盘,或通过HTTP将其推送到其他位置。在这种情况下,我会考虑运行增量输出,我也建议批量处理。在一个大型集群中,我甚至建议将导出分组到每个林或每个附加内容林的主机上。计划任务允许定位应运行它们的特定主机。
您还可以运行adhoc导出,尤其是在使用taskbot等工具批量处理工作时。如果将它与OPTIONS-SYNC-UPDATE
模式结合使用,您可以在发布之前将多个批次合并回一个结果文件,并且与单线程运行相比,可以获得更好的性能。合并结果不会无限扩展,但如果你有一个相对较小的数据集(可能只有几百万个小记录),那就足够了。
HTH!