如何使用NiFi将FlowFile内容以BLOB形式插入Oracle数据库
将NiFi FlowFile内容以BLOB插入Oracle数据库的实现方案
前提准备
先在NiFi的控制器服务中创建并启用DBCPConnectionPool,配置Oracle数据库连接信息:
- JDBC URL:
jdbc:oracle:thin:@//<主机地址>:<端口>/<服务名> - 驱动类:
oracle.jdbc.OracleDriver - 确保Oracle JDBC驱动包(如
ojdbc8.jar)已放入NiFi的lib目录并重启NiFi
推荐方案:使用PutDatabaseRecord处理器
这是最直接高效的方式,无需额外转换步骤:
- 添加
PutDatabaseRecord处理器到画布 - 配置关键属性:
- Database Connection Pooling Service:选择已配置好的Oracle连接池
- Record Reader:选择
RawRecordReader,设置Record Format为bytes(将FlowFile完整内容读取为字节数组,对应BLOB类型) - Record Writer:选择
JsonRecordSetWriter,在Schema Text中定义与表结构匹配的JSON Schema:{ "type": "record", "name": "BlobTableRecord", "fields": [ {"name": "id", "type": "string"}, {"name": "name", "type": "string"}, {"name": "data", "type": "bytes"} ] } - Statement Type:选择
INSERT - Table Name:填写你的目标表名(例如
YOUR_TABLE) - Column Names:
id,name,data - Attributes to Include:
id,name(将FlowFile的这两个属性映射到数据库的对应字段)
- 启动处理器和关联的控制器服务,传入带有
id、name属性的FlowFile即可完成插入
替代方案:PutSQL+Content to Attribute组合
如果偏好使用原生SQL语句,可采用以下步骤:
- 添加
Content to Attribute处理器:将FlowFile内容转为名为file_content的属性(属性值自动以字节数组存储) - 添加
PutSQL处理器:- Database Connection Pooling Service:选择Oracle连接池
- SQL Statement:
INSERT INTO YOUR_TABLE (id, name, data) VALUES (?, ?, ?) - SQL Arguments:依次配置:
- 参数1:属性
id,类型选VARCHAR - 参数2:属性
name,类型选VARCHAR - 参数3:属性
file_content,类型选BLOB
- 参数1:属性
- 连接两个处理器,启动后即可完成插入
验证
插入完成后,可通过Oracle客户端查询目标表,确认id、name属性值正确,data字段为BLOB类型且内容与原FlowFile一致
内容的提问来源于stack exchange,提问作者Amarnatha Reddy
相关产品推荐
相关产品推荐

