Ввод данных в MySQL с использованием putdatabaserecord в NIFI - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть поток Getfile -> PutDatabaseRecord , и у меня есть CSV с полями следующим образом:

№ модуля, Pos, имя машины, тип машины

Я хочу включить значение для этих полей в таблицу базы данных «Тест», в которой есть поля, описываемые как:

Module_No, Pos, Machine_Name, Machine_Type

Итак, это изменение имени поляКакой параметр установить в записи Putdatabaserecord для успешной загрузки данных в таблицу mysql.

Прямо сейчас я получаю ошибку, так как модуль № не может быть нулевым.Как я могу исправить это изменение имен заголовков в исходной таблице CSV и MySQL.Спасибо!

1 Ответ

0 голосов
/ 15 ноября 2018

В PutDatabaseRecord вы можете настроить свою схему на использование имен полей в том виде, в каком они появляются в базе данных, и игнорировать имена заголовков (которые немного отличаются). Если вы используете Get String Fields From Header в качестве своей стратегии доступа к схеме, измените ее на Use Schema Text и добавьте в свойство 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. Затем записи будут считываться с использованием явных имен полей, которые соответствуют столбцам в вашей БД, и процессор должен работать правильно.

...