You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NiFi接收HTTP XML请求写入Postgres的XML解析转换问题

NiFi XML解析入库解决方案

步骤1:使用EvaluateXPath处理器提取XML字段

将你已配置完成的请求接收处理器的success流关系,连接到EvaluateXPath处理器,按以下参数配置:

  • Destination:选择flowfile-attributes,将提取到的字段存为流文件属性,方便后续调用
  • Return Type:选择string
  • 新增7个自定义属性,对应你需要提取的字段,属性值为匹配XML的XPath表达式:
    • MainID://member[name='MainID']/value/string/text()
    • origintimestamp://member[name='origintimestapmp']/value/dateTime.iso8601/text()(注意原XML内该字段拼写多了一个a,必须和XML内实际拼写一致才能匹配成功)
    • Xvalue://member[name='Xvalue']/value/string/text()
    • Action1://member[name='DataFields']/value/struct/member[name='Action1']/value/string/text()
    • Action2://member[name='DataFields']/value/struct/member[name='Acttion2']/value/string/text()(注意原XML内该字段是两个t,拼写和你需求里的Action2不一致,需按XML实际拼写填写)
    • Action3://member[name='DataFields']/value/struct/member[name='Action3']/value/string/text()
    • Action4://member[name='DataFields']/value/struct/member[name='Action4']/value/string/text()

配置完成后,EvaluateXPath的success关系下的流文件,都会自动携带以上7个属性,空值会自动留空,和你需要的输出格式一致。

步骤2:构造PostgreSQL插入语句

将EvaluateXPath的success关系连接到ReplaceText处理器,按以下参数配置:

  • Replacement Value:替换为你实际使用的表结构对应的插入语句,示例如下:
INSERT INTO 你的表名 (mainid, origintimestamp, xvalue, action1, action2, action3, action4)
VALUES ('${MainID:escapeSql()}', '${origintimestamp:escapeSql()}', '${Xvalue:escapeSql()}', '${Action1:escapeSql()}', '${Action2:escapeSql()}', '${Action3:escapeSql()}', '${Action4:escapeSql()}');
  • 其余参数保持默认即可,表达式中的:escapeSql()函数会自动转义SQL特殊字符,避免注入风险。

步骤3:执行数据库插入

将ReplaceText的success关系连接到你已经配置好的ExecuteSQL处理器(绑定你提前建好的PG连接池),把ExecuteSQL的SQL select query参数留空,处理器会自动读取流文件内容作为SQL语句执行。

高并发场景可选优化

如果请求并发量较高,可以不用构造单条SQL语句,将提取到的属性转成CSV/JSON格式后,用ConvertRecord + PutDatabaseRecord的组合实现批量插入,性能更高。

内容的提问来源于stack exchange,提问作者Alaa eddean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:36:07