提取filname并将名称存储在csv文件的新列中

时间:2018-08-14 16:55:59

标签: regex apache apache-nifi

我想提取文件名并将文件名存储在CSV文件的现有列之一中。这该怎么做?使用哪个处理器?什么配置? 例如,我有一个文件名“ FE_CHRGRSIM_20171207150616_CustRec.csv”,我想提取“ FE_CHRGRSIM_20171207150616”并将此值存储在Same CSV文件中的现有列下。请帮忙。 TIA

1 个答案:

答案 0 :(得分:1)

通常,“真实”文件名可以作为流文件上的属性使用,该属性称为“文件名”。您可以将UpdateRecord与“文字价值”的替换策略一起使用;添加一个名为/filename的用户定义属性,并将其值设置为${filename:substringBeforeLast('.')}。您需要确保将“文件名”字段添加到架构中(通过UpdateRecord或手动添加)。如果您不提前知道自己的CSV模式,则可以使用InferAvroSchema,它将尝试找出它。

如果UpdateRecord和架构东西似乎不适合您,则替代方法(因为它是CSV)是使用ReplaceText,匹配整行,然后替换为该值,后跟,${filename:substringBeforeLast('.')}。那应该将文件名(扩展名删除)添加为传出CSV的最后一列。