使用Apache NiFi UpdateRecord为CSV字段加双引号出现多余引号如何解决
Apache NiFi UpdateRecord处理CSV列加引号问题解决方案
问题根因
出现三重引号不符合预期的结果,有两个核心错误点:
- 字段更新表达式存在拼写错误和逻辑冗余:你写的
filed为拼写错误,正确拼写是field,且replaceAll完全不需要使用,你仅需要给原值拼接双引号即可,多余的匹配替换逻辑会引入额外的转义风险。 - CSVRecordSetWriter默认自动加引号规则冲突:默认配置下CSVWriter如果检测到字段值包含双引号,会自动给整个字段额外套一层双引号,同时对原有双引号做转义,就会出现
"""test-1"""的错误输出。
解决步骤
1. 修正UpdateRecord的更新规则
删除原有replaceAll写法,替换为直接拼接双引号的表达式:/string_column : concat('"', ${field.value}, '"')
提示:用单引号包裹双引号,避免表达式解析时出现转义冲突。
2. 调整CSVRecordSetWriter配置
修改以下CSVRecordSetWriter参数,其余原有配置保持不变即可:
- 找到
Quote Mode配置项,选择NEVER(关闭自动给字段加引号的逻辑) - 保持
Escape Character默认值为",不需要额外调整
3. 输出验证
调整后输出的CSV就会完全符合预期:
id,name,string_column 1,sachith,"test-1" 2,nalaka,"test-2"
内容的提问来源于stack exchange,提问作者Sachith Muhandiram
相关产品推荐
相关产品推荐

