如何移除DataWeave 2.0生成的CSV文件末尾的空行
DataWeave 2.0 CSV输出去除末尾空行解决方案
问题原因
DataWeave 2.0默认输出CSV时,会为每一行(含最后一行数据)末尾追加换行符,因此最终文件末尾会出现多余空行,该行为在开启deferred=true的流处理模式下默认生效。
解决方案
方案1:使用官方配置参数(推荐,兼容流处理模式)
如果你使用的是DataWeave 2.3及以上版本,直接在CSV输出配置中添加ignoreTrailingLineBreak=true参数即可,无需修改转换逻辑,也不会破坏数据流处理的内存友好特性:
%dw 2.0 output application/csv header=true, separator = "|", deferred=true, ignoreTrailingLineBreak=true --- payload map ( payload01 , indexOfPayload01 ) -> { TYPE: payload01."type", METHOD: payload01."method", SERVICE_ID: payload01."Service_ID", SERVICE: payload01."Service" }
方案2:字符串裁剪适配低版本(仅适合小数据集)
如果使用的DataWeave版本不支持上述参数,可以先将转换结果转为字符串后裁剪末尾空白,注意该方案需要关闭deferred模式,会加载全量数据到内存,不适合大文件场景:
%dw 2.0 output application/java --- write( payload map ( payload01 , indexOfPayload01 ) -> { TYPE: payload01."type", METHOD: payload01."method", SERVICE_ID: payload01."Service_ID", SERVICE: payload01."Service" }, "application/csv", {header:true, separator = "|"} ) trim()
内容的提问来源于stack exchange,提问作者gokul raj
相关产品推荐
相关产品推荐

