使用NIFI中的putdatabaserecord将数据放入MySQL

时间:2018-11-14 23:40:10

标签: mysql apache apache-nifi

我有一个流程 Getfile-> PutDatabaseRecord ,并且我有一个CSV,其字段如下:

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

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

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

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

现在我遇到错误,因为模块号不能为null。如何解决原始CSV和MySQL表中标头名称的这种更改。 谢谢!

1 个答案:

答案 0 :(得分:4)

在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"}
 ]
}

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