Apache NiFi使用PutDatabaseRecord插入PostgreSQL失败:必填列'name'无值
解决Apache NiFi向PostgreSQL插入CSV数据时的"Record does not have a value for Required column 'name'"报错
核心问题定位
报错根源是CSV Reader没有正确解析CSV文件的字段——你的CSV用分号(;)做分隔符,但NiFi的CSV Reader默认用逗号(,),导致整行被识别成单个字段,PutDatabaseRecord自然找不到name列的值。
具体修复步骤
1. 修改CSV Reader的分隔符配置
打开你提供的[配置图片3]对应的CSV Reader配置,找到**字段分隔符(Field Delimiter)**选项,把默认的逗号(,)改成分号(;)。
2. 确认PutDatabaseRecord的映射配置
- 检查PutDatabaseRecord的「Record Reader」是否选择了修改后的CSV Reader
- 如果用的是「使用记录中的列名(Use Column Names from Record)」模式,确认CSV表头和数据库列名完全匹配(你的CSV表头
name和数据库列名一致,这部分没问题)
3. 额外检查项
- 确认CSV文件表头没有多余空格或特殊字符(你的测试CSV表头正常)
- 确保CSV每一行的
name字段都有值(你的测试数据都符合要求)
验证
修改配置后重新运行流程,GetFile获取CSV后,CSV Reader能正确拆分出name、age、email三个字段,PutDatabaseRecord就能将数据插入到PostgreSQL的data表中。
内容的提问来源于stack exchange,提问作者Nagween Jaffer
相关产品推荐
相关产品推荐

