Skip to main content

PutDatabaseRecord

Описание

Процессор PutDatabaseRecord использует указанный RecordReader для ввода (возможно, нескольких) записей из входящего FlowFile. Эти записи переводятся в SQL-запросы и выполняются как одна транзакция. Если возникают ошибки, FlowFile направляется в "ошибка" или "повторная попытка", а если записи успешно переданы, входящий FlowFile направляется в "успех". Тип выполняемой процессором инструкции указывается через свойство Statement Type, которое принимает некоторые предопределенные значения, такие как INSERT, UPDATE и DELETE, а также 'Use statement.type Attribute', что заставляет процессор получать тип инструкции из атрибута FlowFile. ВАЖНО: если тип инструкции — это UPDATE, то входящие записи не должны изменять значения первичных ключей (или указанных пользователем ключей обновления). Если такие записи будут обнаружены, инструкция UPDATE, отправленная в базу данных, может ничего не сделать (если не будут найдены существующие записи с новыми значениями первичных ключей), или случайно повредить существующие данные (изменив записи, для которых существуют новые значения первичных ключей).

Теги

sql, record, jdbc, put, database, update, insert, delete

Свойства

НазваниеОписание
Record ReaderУказывает службу контроллера, используемую для анализа входящих данных и определения их схемы.
Database TypeThe type/flavor of database, used for generating database-specific code. In many cases the Generic type should suffice, but some databases (such as Oracle) require custom SQL clauses.
Statement TypeУказывает тип SQL-запроса для создания. Пожалуйста, обратитесь к документации по базе данных для получения описания поведения каждой операции. Обратите внимание, что некоторые типы баз данных могут не поддерживать определенные типы запросов. Если выбрано «Использовать атрибут statement.type», то значение берётся из атрибута statement.type в FlowFile. Опция «Использовать атрибут statement.type» — единственная, которая позволяет использовать тип оператора «SQL». Если указано «SQL», то значение поля, указанного свойством «Поле, содержащее SQL», должно быть допустимым оператором SQL в целевой базе данных и будет выполняться без изменений.
Statement Type Record PathУказывает путь к записи для оценки каждой записи с целью определения типа оператора. Путь к записи должен соответствовать INSERT, UPDATE, UPSERT или DELETE. (Также поддерживаются типы операций в стиле Debezium: "r" и "c" для INSERT, "u" для UPDATE и "d" для DELETE)This Property is only considered if the [Statement Type] Property has a value of "Use Record Path".
Data Record PathЕсли указано, это свойство обозначает путь к записи, который будет вычисляться для каждой входящей записи, и запись, полученная в результате вычисления пути к записи, будет отправлена в базу данных вместо отправки всей входящей записи. Если не указано, вся входящая запись будет опубликована в базе данных.
Database Connection Pooling ServiceСлужба контроллера, которая используется для получения подключения к базе данных для отправки записей.
Catalog NameИмя каталога, который должен быть обновлен оператором. Это может не относиться к базе данных, которую вы обновляете. В этом случае оставьте поле пустым. Обратите внимание, что если свойство задано и база данных чувствительна к регистру, имя каталога должно точно совпадать с именем каталога базы данных. Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды)
Schema NameИмя схемы, к которой принадлежит таблица. Это может не относиться к базе данных, которую вы обновляете. В этом случае оставьте поле пустым. Обратите внимание, что если свойство задано и база данных чувствительна к регистру, имя схемы должно точно совпадать с именем схемы базы данных. Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды)
Table NameИмя таблицы, на которую должен повлиять оператор. Обратите внимание, что если база данных чувствительна к регистру, имя таблицы должно точно совпадать с именем таблицы базы данных. Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды)
Binary String FormatФормат, применяемый при декодировании строковых значений в двоичные. Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды)
Translate Field NamesЕсли значение равно true, процессор попытается преобразовать имена полей в соответствующие имена столбцов для указанной таблицы. Если значение равно false, имена полей должны точно совпадать с именами столбцов, иначе столбец не будет обновлен
Unmatched Field BehaviorЕсли входящая запись содержит поле, которое не соответствует ни одному из столбцов таблицы базы данных, это свойство определяет, как справиться с ситуацией
Unmatched Column BehaviorЕсли поступающая запись не содержит сопоставления полей для всех столбцов таблицы базы данных, это свойство определяет, как обрабатывать такую ситуацию.
Update KeysСписок имён столбцов, разделённых запятыми, которые однозначно идентифицируют строку в базе данных для операторов UPDATE. Если тип оператора — UPDATE и это свойство не задано, используются первичные ключи таблицы. В этом случае, если первичный ключ отсутствует, преобразование в SQL завершится ошибкой, если для параметра «Поведение при отсутствии совпадений» установлено значение «Сбой». Это свойство игнорируется, если тип оператора — INSERT Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды)This Property is only considered if the [Statement Type] Property is set to one of the following values: [Use statement.type Attribute], [Use Record Path], [UPSERT], [UPDATE]
Field Containing SQLЕсли тип оператора — «SQL» (как указано в атрибуте statement.type), это поле указывает, какое поле в записи (записях) содержит оператор SQL для выполнения. Значение поля должно быть одним оператором SQL. Если тип оператора не «SQL», это поле игнорируется. Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды)This Property is only considered if the [Statement Type] Property is set to one of the following values: [Use statement.type Attribute], [Use Record Path]
Allow Multiple SQL StatementsЕсли тип оператора «SQL» (как указано в атрибуте statement.type), это поле указывает, следует ли разделять значение поля точкой с запятой и выполнять каждый оператор отдельно. Если какой-либо оператор вызывает ошибку, весь набор операторов будет отменен. Если тип оператора не «SQL», это поле игнорируется.This Property is only considered if the [Statement Type] Property is set to one of the following values: [Use statement.type Attribute], [Use Record Path]
Quote Column IdentifiersПри включении этой опции все имена столбцов будут заключаться в кавычки, что позволит использовать зарезервированные слова в качестве имен столбцов в ваших таблицах.
Quote Table IdentifiersПри включении этой опции имя таблицы будет заключаться в кавычки для поддержки использования специальных символов в имени таблицы.
Max Wait TimeМаксимальное время выполнения оператора SQL, ноль означает отсутствие ограничений. Максимальное время менее 1 секунды будет равно нулю. Поддерживает язык выражений: true (будет оцениваться только с использованием переменных среды)
Rollback On FailureSpecify how to handle error. By default (false), if an error occurs while processing a FlowFile, the FlowFile will be routed to 'failure' or 'retry' relationship based on error type, and processor can continue with next FlowFile. Instead, you may want to rollback currently processed FlowFiles and stop further processing immediately. In that case, you can do so by enabling this 'Rollback On Failure' property. If enabled, failed FlowFiles will stay in the input relationship without penalizing it and being processed repeatedly until it gets processed successfully or removed by other means. It is important to set adequate 'Yield Duration' to avoid retrying too frequently.
Table Schema Cache SizeУказывает, сколько схем таблиц должно быть кэшировано
Maximum Batch SizeУказывает максимальное количество операторов SQL, которые должны быть включены в каждую партию, отправляемую в базу данных. Значение «ноль» означает, что размер партии не ограничен и все операторы помещаются в одну партию, что может привести к высокому потреблению памяти при очень большом количестве операторов. Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды)
Database Session AutoCommitРежим автоматической фиксации, устанавливаемый для используемого подключения к базе данных. Если установлено значение false, операции будут явно зафиксированы или откатаны (в зависимости от успеха или неудачи соответственно). Если установлено значение true, драйвер/база данных автоматически выполняет фиксацию/откат.

Взаимосвязи

  • retry: Файл потока направляется в эту связь, если базу данных невозможно обновить, но повторная попытка может увенчаться успехом
  • success: Успешно создан файл Flow из набора результатов SQL-запроса.
  • failure: Файл потока направляется в эту связь, если базу данных невозможно обновить и повторная попытка также не увенчается успехом, например, из-за некорректного запроса или нарушения ограничения целостности