我有CSV文件,其中包含以下行。
No,NAme,ID,Description
1,Stack,232,"ABCDEFGHIJKLMNO
-- Jiuaslkm asdasdasd"
在处理器结构GetFile - > SplitText
下面使用在SplitText中,我将标题和行拆分计数设为1。
所以我认为它可以分开排列如下..,
No,NAme,ID,Description
1,Stack,232,"ABCDEFGHIJKLMNO
-- Jiuaslkm asdasdasd:"
但它实际上将csv拆分为“2”分裂,如下所示。
First SPlit:
No,NAme,ID,Description
1,Stack,232,"ABCDEFGHIJKLMNO
第二次拆分:
No,NAme,ID,Description
-- Jiuaslkm asdasdasd"
所以我面临数据处理丢失的事情。
GOal:现在我需要将这些数据线作为单行处理。
EDIT 1:
替换Text。,
可以在下面替换\ n,
No,NAme,ID,Description
\n1,Stack,232,"ABCDEFGHIJKLMNO
\n-- Jiuaslkm asdasdasd"
它无法转换为单个拆分,但只产生与上述相同的结果。
编辑2:
我的ReplaceTextProcessor具有以下值。
Search Value:"(.*?)(\n)(.*?)"
Replacement Value:"$1\\n$3"
Character Set:UTF-8
MaximumBuffer Size:1MB
Replacement Strategy:Regex Replace
Evaluation Mode:Entire Text
如果有任何遗漏,请告诉我。
答案 0 :(得分:3)
在" row"中显然有某种换行符。你提供了。
No,NAme,ID,Description (1)
1,Stack,232,"ABCDEFGHIJKLMNO (2)
-- Jiuaslkm asdasdasd" (3)
如果您希望忽略配对"
中的换行符,则必须以某种方式将它们转义(即ReplaceText
之前使用令牌,然后在之后撤消操作分裂)。尝试使用替换为SplitText
的正则表达式"(.*?)(\n)(.*?)"
。这将处理你上面的情况。
"$1\\n$3"
变为
No,NAme,ID,Description
1,Stack,232,"ABCDEFGHIJKLMNO
-- Jiuaslkm asdasdasd"
2,Queue,454,"PQRSTUVWXYZ
-- Other words here"
然后分裂后
No,NAme,ID,Description
1,Stack,232,"ABCDEFGHIJKLMNO\n -- Jiuaslkm asdasdasd"
2,Queue,454,"PQRSTUVWXYZ\n -- Other words here"
和
No,NAme,ID,Description
1,Stack,232,"ABCDEFGHIJKLMNO\n -- Jiuaslkm asdasdasd"
如果你需要处理任意数量的No,NAme,ID,Description
2,Queue,454,"PQRSTUVWXYZ\n -- Other words here"
,你需要使用更复杂的东西(我不认为先行可以原生地处理这些,你需要将\n
循环到自身或您可能需要ReplaceText
)。
<强>更新强>
最新版本中引入了一个回归错误,打破了这一流程。这是一个已知问题NIFI-3255,Jira捕获ExecuteScript
引发的IllegalArgumentException
。如果在应用补丁的情况下运行,此流程将完美运行。我提供了template和log output。