MarkLogic CORB执行时单URI生成单文件,如何合并为单一输出文件?
解决MarkLogic CORB生成单一合并输出文件的问题
要将所有URI的处理结果合并到单一CSV文件,只需修改CORB任务配置,替换原有的文件导出任务类即可:
关键修改点
- 将
PROCESS-TASK参数的值从com.marklogic.developer.corb.ExportToFileTask替换为com.marklogic.developer.corb.ExportToSingleFileTask,这个任务类会将所有处理模块的输出追加到同一个目标文件中 - 保留原有的
EXPORT-FILE-NAME配置,指定最终生成的单一文件路径
修改后的完整命令
java -cp marklogic-xcc-10.0.10.jar:marklogic-corb-2.5.6.jar \ -DXCC-CONNECTION-URI=xcc://user:pw@host:5008 \ -DPROCESS-MODULE=/corb/transform-docs.xqy \ -DTHREAD-COUNT=2 \ -DURIS-MODULE=/corb/get-uris.xqy \ -DPROCESS-TASK=com.marklogic.developer.corb.ExportToSingleFileTask \ -DEXPORT-FILE-NAME=/reports/testfile.csv \ com.marklogic.developer.corb.Manager
额外配置(可选)
如果需要为CSV文件添加表头,可以添加以下参数:
# 指定表头内容 -DEXPORT-FILE-HEADER="字段1,字段2,字段3" \ # 启用预批量任务写入表头 -DPRE-BATCH-TASK=com.marklogic.developer.corb.PreBatchUpdateFileTask
注意事项
- 确保处理模块
transform-docs.xqy返回的每一行都是符合CSV格式的字符串,若内容包含逗号、双引号等特殊字符,需提前做转义处理(比如用双引号包裹字段值) - 线程数设置需合理,
ExportToSingleFileTask已处理线程安全写入,但过高的线程数可能影响性能 - 确认目标目录
/reports/具备写入权限 - MarkLogic 10.x与CORB 2.5.6版本兼容,无需额外调整版本
内容的提问来源于stack exchange,提问作者Anuj Gupta
相关产品推荐
相关产品推荐

