如何在Nifi中的变量中保存文件名?

问题描述

我是Nifi的新手,我试图获取文件名并将此文件名保存在变量中,以供稍后在该过程中使用。

基本上我有一个文件(data_yyyyMMdd.tar.gz),其中包含2个.txt文件(1.txt和2.txt),在解压缩该文件之前,我想将其名称保存为变量,然后,使用此变量将内容添加到解压缩的文件中。

文件内容(最初): 1.txt id |名称 1 |苹果 2 |橙色

文件名更新后的文件内容 id |名称|文件名 1 | apple | data_yyyyMMdd.tar.gz 2 | orange | data_yyyyMMdd.tar.gz

我设法成功解压缩到文件,但是,我无法将.tar.gz文件名保存在变量中,并将其值添加到每个文件内容中。

你们能帮我吗?

解决方法

取决于您用来获取tar.gz文件的处理器,您可能已经将名为filename的FlowFile属性设置为tar.gz文件的名称。解压缩后,您可能会发现filename属性已被覆盖(虽然不确定),因此,在解压缩之前,请使用UpdateAttribute将filename属性复制到其他属性中。例如,您可以在UpdateAttribute中添加名为original.filename的属性,并将其值设置为${filename}

解压后,您可以使用UpdateRecord将原始文件名添加为每个记录中的字段,我认为是通过将“替换价值策略”设置为Literal Value并添加设置为{{1}的属性/filename }。我没有尝试过,所以不知道这些设置是否正确,但是这种方法应该可行。