NIFI中使用putdatabaserecord将数据放入MySQL

shr*_*ads 3 mysql apache apache-nifi

我有一个流Getfile -> PutDatabaseRecord,我有一个包含如下字段的 CSV:

模块编号、位置、机器名称、机器类型

我想在我的数据库表“Test”中提取这些字段的值,该表的字段描述为:

Module_No,Pos,Machine_Name,Machine_Type

所以这里是字段名称的更改。在 Putdatabaserecord 中设置什么设置才能成功将数据摄取到 mysql 表中。

现在我收到错误,因为模块号不能为空。如何修复原始 CSV 和 MySQL 表中标题名称的这种更改。谢谢!

mat*_*tyb 8

在 PutDatabaseRecord 中,您可以将架构配置为使用出现在数据库中的字段名称,并忽略标题名称(略有不同)。如果您Get String Fields From Header用作架构访问策略,Use Schema Text请将其更改为并将以下内容放入架构文本属性中:

{
 "namespace": "nifi",
 "name": "machine",
 "type": "record",
 "fields": [
  {"name": "Module_No","type": "string"},
  {"name": "Pos","type": "string"},
  {"name": "Machine_Name","type": "string"},
  {"name": "Machine_Type","type": "string"}
 ]
}
Run Code Online (Sandbox Code Playgroud)

然后设置Treat First Line As Headertrue并设置Ignore CSV Header Column Namestrue。然后将使用与数据库中的列匹配的显式字段名称读入记录,并且处理器应该可以正常工作。