NiFi:ReplaceTextWithMapping处理器

时间:2016-12-07 16:25:26

标签: regex apache-nifi

我有以下插入语句:

  1. insert into temp1 values (test1, test2)

  2. insert into temp2 values (test3)

  3. 预期结果:

    1. insert into temp1 values (100, 200)

    2. insert into temp2 values (300)

    3. 基本上,我想分别用值test1test2替换第一个查询文字100200,并且用第二个查询替换test3价值300。有人可以帮助处理上述用例的映射文件吗?

      我尝试了以下内容,但它没有任何效果。

      搜索值(RegEx)替换值

      (1)(.*values.*)(.*test1)(.*,)(.*test2) -> $2 val1 $4 val2
      
      (2)(.*values.*)(.*test1) -> $2 val3
      

1 个答案:

答案 0 :(得分:4)

如果这确实是您需要执行的映射范围,那么常规ReplaceText处理器就足够了。使用下面的设置会产生所需的输出:

ReplaceText configuration

它只检测test的每个实例,后跟一个数字,并用该数字和00替换它。

如果您需要使用ReplaceTextWithMapping进行更复杂的查找,则映射文件的格式必须为:

search_value_1    replacement_value_1
search_value_2    replacement_value_2
etc.

搜索值和替换值之间的分隔符为 \ t

--------------------------------------------------
Standard FlowFile Attributes
Key: 'entryDate'
    Value: 'Wed Dec 07 10:48:24 PST 2016'
Key: 'lineageStartDate'
    Value: 'Wed Dec 07 10:48:24 PST 2016'
Key: 'fileSize'
    Value: '66'
FlowFile Attribute Map Content
Key: 'filename'
    Value: '56196144045589'
Key: 'path'
    Value: './'
Key: 'uuid'
    Value: 'f6b28eb0-73b5-4d94-86c2-b7a5d4cc991e'
--------------------------------------------------
insert into temp1 values (100, 200)
insert into temp2 values (300)