SmartQuery /ВОПРОС → ПРИМЕР → ПОНЯТНЫЙ ОТВЕТ
Базы данных

Apache NiFi и PostgreSQL: запись набора данных через JDBC

NiFi соединяет источник данных, преобразование и запись в PostgreSQL в поток FlowFile. Для взаимодействия с СУБД используют JDBC-процессоры и controller service пула соединений, а не один универсальный процессор с названием PostgreSQL.

Подключение

  1. Подготовьте PostgreSQL JDBC driver, доступный процессу NiFi.
  2. Настройте DBCPConnectionPool с JDBC URL, классом драйвера и учётной записью с правами только на нужные таблицы.
  3. Включите controller service и проверьте доступ к тестовой базе; секреты храните в предусмотренных защищённых параметрах.
jdbc:postgresql://db.internal:5432/example
org.postgresql.Driver

Поток записи

Для JSON/CSV сначала задайте схему и подходящий Record Reader. PutDatabaseRecord получает записи через reader, выбранный DBCP service, имя таблицы и тип операции. Для чтения выберите соответствующий SQL-процессор и формат результата отдельно.

Начните с тестовой таблицы и одной записи с известным ключом. Проверьте соответствие полей столбцам, типы чисел, null и кодировку. Не стройте SQL конкатенацией недоверенных значений.

Сбои и повторы

  • Разведите успешный выход и ошибки процессора: не зацикливайте неисправимую запись бесконечно.
  • Определите, как повтор влияет на уникальные ключи и не создаёт ли дубликаты.
  • Проверьте batch/transaction настройки именно выбранного процессора.
  • Ограничьте очереди и нагрузку на базу; NiFi не гарантирует «реальное время» независимо от backlog.

Сначала докажите правильность на нескольких строках, затем увеличивайте поток и наблюдайте задержку, ошибки и число записанных строк.

Документация