You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过MarkLogic CORB每两千个XML文件导出为ZIP包?求示例

使用MarkLogic CORB批量导出XML为分卷ZIP包

完全可以通过CORB工具实现每2000个XML文件导出为独立ZIP包的需求,核心是通过配置批次大小结合内置的ZIP导出任务类实现,以下是具体实现示例:

1. 配置CORB参数文件(corb.properties)

# XCC连接信息
XCC-CONNECTION-URI=xcc://用户名:密码@localhost:8000/目标数据库
# 获取待导出XML文档的URI模块
URIS-MODULE=uris.xqy|ADHOC
# 处理单个文档的模块
PROCESS-MODULE=process-batch.xqy|ADHOC
# 每批次处理2000个文档
BATCH-SIZE=2000
# 线程数(生成ZIP建议单线程避免冲突)
THREAD-COUNT=1
# 导出ZIP的文件名模板,%d会替换为批次号
EXPORT-FILE-NAME-PATTERN=xml-export-batch-%d.zip
# 指定CORB内置的ZIP导出任务类
EXPORT-MODULE=com.marklogic.developer.corb.ExportToZipFileTask

2. URI获取模块(uris.xqy)

该模块用于筛选所有XML类型的文档URI:

cts:uris((), (), cts:document-type-query(xs:QName('xml')))

3. 文档处理模块(process-batch.xqy)

该模块负责读取每个文档内容,并返回ZIP内的文件名和对应内容:

declare variable $URI as xs:string external;

let $document := fn:doc($URI)
let $zip-inner-filename := fn:replace($URI, '^/', '') || '.xml'
return
  map:entry($zip-inner-filename, $document)

4. 运行CORB命令

确保本地有corb.jar和marklogic-xcc-*.jar,执行以下命令启动任务:

java -cp "corb.jar;marklogic-xcc-*.jar" com.marklogic.developer.corb.Manager corb.properties

关键说明

  • 每个批次的ZIP文件会以xml-export-batch-1.zip、xml-export-batch-2.zip这样的命名生成
  • 如果待导出的文档总数不是2000的整数倍,最后一个ZIP会包含剩余的所有文档
  • 可根据服务器性能调整THREAD-COUNT,但生成ZIP时单线程能避免文件写入冲突

内容的提问来源于stack exchange,提问作者thichxai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:32:16