Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NiFi:ExtractText中的正则表达式获取CSV头而不是数据_Csv_Apache Nifi - Fatal编程技术网

NiFi:ExtractText中的正则表达式获取CSV头而不是数据

NiFi:ExtractText中的正则表达式获取CSV头而不是数据,csv,apache-nifi,Csv,Apache Nifi,我正在处理一个获取CSV文件的流程。我想根据CSV记录中的第一个字段将记录放入不同的目录中 例如,CSV文件如下所示 country,firstname,lastname,ssn,mob_num US,xxxx,xxxxx,xxxxx,xxxx UK,xxxx,xxxxx,xxxxx,xxxx US,xxxx,xxxxx,xxxxx,xxxx JP,xxxx,xxxxx,xxxxx,xxxx JP,xxxx,xxxxx,xxxxx,xxxx 我想得到第一个字段的字段值,即country。把这些

我正在处理一个获取CSV文件的流程。我想根据CSV记录中的第一个字段将记录放入不同的目录中

例如,CSV文件如下所示

country,firstname,lastname,ssn,mob_num
US,xxxx,xxxxx,xxxxx,xxxx
UK,xxxx,xxxxx,xxxxx,xxxx
US,xxxx,xxxxx,xxxxx,xxxx
JP,xxxx,xxxxx,xxxxx,xxxx
JP,xxxx,xxxxx,xxxxx,xxxx
我想得到第一个字段的字段值,即country。把这些记录放到一个特定的目录中。美国记录进入美国目录,英国记录进入英国目录,依此类推

我现在的流程是:

GetFile
--->
SplitText
(行分割计数=1和头行计数=1)--->
ExtractText
(行=(.+)--->
PutFile
(目录=\tmp\data\${line:getDelimitedField(1)})。我需要在所有拆分文件中复制头文件,以实现不同的目的。所以我需要它们


问题是,传入的CSV文件成功地拆分为多个流文件,并带有头。但是,我在
ExtractText
处理器中给出的正则表达式会根据分割的流文件的CSV头而不是记录对其进行计算。因此,我总是用“国家”来代替美国或英国的“线”属性。因此,所有文件都转到
\tmp\data\country
。请帮助我如何解决此问题。

我相信getDelimitedField将只处理一行,并且可能不会移动到分割文件中的换行

我主张采用一种稍微不同的方法,您可以通过正则表达式修改ExtractText来查找国家代码,并避免将文件内容作为属性包含在内

使用正则表达式
^.*\n+(\w+
将捕获第一行和第一组单词字符,直到逗号,并将它们放置在捕获组1中指定的属性名称中。(例如国家1)


我已经创建了一个模板,该模板应该可以从

上获得您想要的值。我将检查该模板并让您知道