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

使用MarkLogic CoRB导出CSV时遇XDMP-UNEXPECTED错误求助

CoRB导出CSV时Process Query语法错误排查与修复

错误原因

你的Process Query触发XDMP-UNEXPECTED语法错误,核心问题是外部变量声明不符合XQuery规范:
你当前的变量声明写法:

declare variable $URI xs:string external;

正确的带类型外部变量声明必须使用as关键字指定类型,修正后的语法应为:

declare variable $URI as xs:string external;

缺少as关键字导致解析器无法识别类型声明逻辑,直接触发语法报错。

修复后的完整代码

优化后的Uri Query

原Uri Query中$count和$URI变量属于冗余代码,直接返回匹配的文档URI列表即可:

xquery version "1.0-ml";
let $dir := "/"
return cts:uris((), (), cts:directory-query($dir, "infinity"))

修复并优化后的Process Query

除了修正变量声明,还可以将cts:search替换为更高效的doc($URI)(已知文档URI时无需通过全文搜索定位):

xquery version "1.0-ml";

declare variable $URI as xs:string external;
let $elementNames := ("name", "address", "company", "emailAddress")
let $doc := doc($URI)/customer
let $textOutput := 
  for $i in $elementNames
    return $doc/*[fn:name() = $i]/text()
return fn:string-join($textOutput, ",")

额外优化建议

  • 若字段值包含逗号,会导致CSV格式错乱,建议用双引号包裹字段值,可修改return语句为:
    return fn:string-join(for $val in $textOutput return concat('"', fn:replace($val, '"', '""'), '"'), ",")
    
  • 如需添加CSV表头,可在CoRB配置中通过PRE-BATCH-TASK执行一次表头输出逻辑,或在Process Query中判断是否为第一条记录时输出表头。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:52:16