Nifi:Nifi 中的分隔符
Nifi: Delimiters in Nifi
我正在处理一项任务并遇到错误。这表示 封装令牌和定界符之间的字符无效。
这里是数据的SS
对于第 08 行,我使用 竖线 作为分隔符,转义字符是“^”。对于第 12 行,我使用 逗号 作为分隔符。突出显示的部分是问题。如果我从第 08 行删除大写符号并从第 12 行删除单引号,它就会成功运行。
处理器是 ConverRecord,这里是处理器配置的屏幕截图。
实际上,我使用了两个ConvertRecord处理器。在一个处理器中,字段分隔符是逗号 (,),而在第二个处理器中,字段分隔符也是逗号 (,),但转义字符是大写符号 (^)。
假设这是两条不同的记录。
为什么它在那个时候抛出错误?我该如何解决这个问题?
提前致谢。
对于第一个示例数据(第08行),将CSVReader
配置为:
Quote Character: "
Escape Character: \
Value Separator(delimiter): |
第二个样本数据(第12行),配置CSVReader
为:
Quote Character: "
Escape Character: \
Value Separator(delimiter): ,
失败的原因是你的数据不符合定界数据规范即数据无效,所以你需要添加上游清理逻辑。
对于第 08 行数据 - 您使用了转义字符 ^
并且同样出现在数据中,所以当 CSVReader
遇到 ^"
它转义了 "
因为这个左双引号没有相应的右双引号导致抛出异常。所以设置 Escape Character: \
属性 将解决问题。 \
是一种广泛使用的转义字符,因此很少将 \
作为数据的一部分。
对于第 12 行数据 - 似乎单引号 '
用作 Quote Character
并且缺少相应的结束引号字符,即 '
导致抛出异常。您需要设计一种逻辑,在需要时添加缺少的结束引号字符。一种解决方法是使用 Quote Character: "
以便 '
将成为数据的一部分,然后您可以在下游例如清理它。如果您要将数据放入 table,则 post-ingestion 更新列以删除 '
我正在处理一项任务并遇到错误。这表示 封装令牌和定界符之间的字符无效。 这里是数据的SS
对于第 08 行,我使用 竖线 作为分隔符,转义字符是“^”。对于第 12 行,我使用 逗号 作为分隔符。突出显示的部分是问题。如果我从第 08 行删除大写符号并从第 12 行删除单引号,它就会成功运行。 处理器是 ConverRecord,这里是处理器配置的屏幕截图。
实际上,我使用了两个ConvertRecord处理器。在一个处理器中,字段分隔符是逗号 (,),而在第二个处理器中,字段分隔符也是逗号 (,),但转义字符是大写符号 (^)。
假设这是两条不同的记录。
为什么它在那个时候抛出错误?我该如何解决这个问题?
提前致谢。
对于第一个示例数据(第08行),将CSVReader
配置为:
Quote Character: "
Escape Character: \
Value Separator(delimiter): |
第二个样本数据(第12行),配置CSVReader
为:
Quote Character: "
Escape Character: \
Value Separator(delimiter): ,
失败的原因是你的数据不符合定界数据规范即数据无效,所以你需要添加上游清理逻辑。
对于第 08 行数据 - 您使用了转义字符 ^
并且同样出现在数据中,所以当 CSVReader
遇到 ^"
它转义了 "
因为这个左双引号没有相应的右双引号导致抛出异常。所以设置 Escape Character: \
属性 将解决问题。 \
是一种广泛使用的转义字符,因此很少将 \
作为数据的一部分。
对于第 12 行数据 - 似乎单引号 '
用作 Quote Character
并且缺少相应的结束引号字符,即 '
导致抛出异常。您需要设计一种逻辑,在需要时添加缺少的结束引号字符。一种解决方法是使用 Quote Character: "
以便 '
将成为数据的一部分,然后您可以在下游例如清理它。如果您要将数据放入 table,则 post-ingestion 更新列以删除 '