我有一个流程 Getfile-> PutDatabaseRecord ,并且我有一个CSV,其字段如下:
模块编号,位置,机器名称,机器类型
我想在数据库表“ Test”中获取这些字段的值,其中的字段描述为:
模块编号,位置,机器名称,机器类型
因此,这是字段名称的更改。在Putdatabaserecord中设置什么设置才能成功将数据摄取到mysql表中。
现在我遇到错误,因为模块号不能为null。如何解决原始CSV和MySQL表中标头名称的这种更改。 谢谢!
答案 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
。然后,将使用与数据库中的列匹配的显式字段名称读取记录,处理器应该可以正常工作。