PutSQL
Описание
Выполняет команду SQL UPDATE или INSERT. Ожидается, что содержимое входящего FlowFile будет SQL-командой для выполнения. SQL-команда может использовать символ ? для параметров подстановки. В этом случае параметры должны существовать как атрибуты FlowFile с именованием sql.args.N.type и sql.args.N.value, где N — положительное число. Ожидается, что sql.args.N.type будет числом, указывающим тип JDBC. Содержимое FlowFile должно быть в формате UTF-8.
Теги
sql, put, rdbms, database, update, insert, relational
Свойства
Название | Описание |
---|---|
JDBC Connection Pool | Указывает пул подкл ючений JDBC, который используется для преобразования сообщения JSON в оператор SQL. Пул подключений необходим для определения подходящих типов столбцов базы данных. |
SQL Statement | Оператор SQL для выполнения. Оператор может быть пустым, содержать константное значение или быть создан из атрибутов с помощью языка выражений. Если это свойство указано, оно будет использоваться независимо от содержимого входящих Flow-файлов. Если это свойство не указано, предполагается, что содержимое входящего Flow-файла содержит допустимый оператор SQL, который будет отправлен процессором в базу данных. Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды) |
Support Fragmented Transactions | Если значение равно true, то при использовании этого процессора для обработки FlowFile процессор сначала проверит атрибуты fragment.identifier и fragment.count этого FlowFile. Если значение fragment.count больше 1, процессор не будет обрабатывать ни один FlowFile с этим идентификатором fragment.identifier, пока все они не станут доступны; в этот момент он обработает все FlowFiles с этим идентификатором fragment.identifier как одну транзакцию в порядке, указанном в атрибутах fragment.index FlowFiles. Это обеспечивает атомарность этих операторов SQL. Если при выполнении какого-либо оператора этой транзакции возникнет исключение, эта транзакция будет отменена. Если транзакция будет отменена, ни один из этих FlowFiles не будет направлен в состояние «успешно». Если для параметра <Откат при сбое> установлено значение true, эти потоковые файлы останутся во входной связи. Если для параметра <Откат при сбое> установлено значение false, то, если какой-либо из этих потоковых файлов будет перенаправлен на "повторную попытку", все эти потоковые файлы будут перенаправлены на "повторную попытку".В противном случае они будут перенаправлены на "сбой". Если это значение равно false, то эти атрибуты будут проигнорированы, и обновления будут происходить независимо друг от друга. |
Database Session AutoCommit | Режим автоматической фиксации для используемого подключения к базе данных. Если установлено значение false, операция (операции) будет явно зафиксирована или отменена (в зависимости от успеха или неудачи соответственно). Если установлено значение true, драйвер/база данных выполняет фиксацию/отмену. |
Transaction Timeout | Если для свойства <Поддержка фрагментированных транзакций> установлено значение true, указывает, как долго следует ожидать поступления всех FlowFiles для конкретного атрибута fragment.identifier, прежде чем просто перенести все FlowFiles с этим идентификатором в отношение «сбой». |
Batch Size | Предпочтительное количество FlowFiles, которые необходимо поместить в базу данных за одну транзакцию |
Obtain Generated Keys | Если установлено значение true, любой ключ, автоматически сгенерированный базой данных, будет добавлен в FlowFile, который его сгенерировал, с помощью атрибута sql.generate.key. Это может привести к незначительному снижению производительности и поддерживается не всеми базами данных. |
Rollback On Failure | Specify 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. |
Взаимосвязи
- retry: Файл потока направляется в эту связь, если обновление базы данных невозможно, но повторная попытка может увенчаться успехом
- success: Файл потока направляется в эту связь после успешного обновления базы данных
- failure: Файл потока направляется в эту связь, если базу данных невозможно обновить и повторная попытка операции также завершится неудачей, например из-за некорректного запроса или нарушения ограничения целостности.