PutSQL 2025.5.31.15

捆绑包

org.apache.nifi | nifi-standard-nar

描述

执行 SQL UPDATE 或 INSERT 命令。传入的 FlowFile 应该是要执行的 SQL 命令。SQL 命令可能使用 ? 转义参数。在这种情况下,要使用的参数必须作为命名约定 sql.args.N.type 和 sql.args.N.value 的 FlowFile 属性存在,其中 N 为正整数。sql.args.N.type 应为表示 JDBC 类型的数字。FlowFile 的内容预计采用 UTF-8 格式。

标签

database、insert、put、rdbms、relational、sql、update

输入要求

REQUIRED

支持敏感的动态属性

false

属性

属性

描述

批处理大小

在单次事务中放入数据库的首选 FlowFiles 数量

JDBC Connection Pool

指定用于将 JSON 消息转换为 SQL 语句的 JDBC 连接池。连接池是确定相应的数据库列类型所必需的。

Obtain Generated Keys

如果为 True,数据库自动生成的键将通过 sql.generate.key 属性添加至生成该键的 FlowFile。这可能会导致性能轻微下降,且并非所有数据库都支持此功能。

Support Fragmented Transactions

如果为 True,则当该处理器使用 FlowFile 时,处理器将首先检查该 FlowFile 的 fragment.identifier 和 fragment.count 属性。如果 fragment.count 值大于 1,则处理器将不会处理具有该 fragment.identifier 的任何 FlowFile,直到全部可用为止;此时,它将按照 FlowFiles 的 fragment.index 属性指定的顺序,将带有该 fragment.identifier 的所有 FlowFiles 作为单一事务处理。这提供了这些 SQL 语句的原子性。一旦该事务的任何语句在执行时引发异常,该事务将被回滚。当事务回滚发生时,这些 FlowFiles 都不会被路由到“success”。如果 <Rollback On Failure> 设置为 True,则这些 FlowFiles 将保留在“input”关系中。当 <Rollback On Failure> 设置为 False 时,如果这些 FlowFiles 中的任何一个路由到“retry”,则所有这些 FlowFiles 都将路由到“retry”。否则,它们将路由到“failure”。如果此值为 False,则这些属性将被忽略,更新将相互独立。

Transaction Timeout

如果 <Support Fragmented Transactions> 属性设置为 True,则指定在将带有特定 fragment.identifier 属性的所有 FlowFiles 转移到“failure”关系之前,需要等待带该标识符的所有 FlowFiles 到达的时长

database-session-autocommit

设置在所用数据库连接上的自动提交模式。如果设置为 False,则将明确提交或回滚操作(分别基于成功或失败),如果设置为 True,则驱动程序/数据库处理提交/回滚。

putsql-sql-statement

要执行的 SQL 语句。该语句可以为空,也可以是常量值,也可以使用表达式语言根据属性构建。如果指定了此属性,则无论传入的 FlowFiles 的内容如何,都将使用该属性。如果此属性为空,则传入的 FlowFile 的内容应包含有效的 SQL 语句,该语句将由处理器向数据库发出。

rollback-on-failure

指定如何处理错误。默认情况 (false) 下,如果在处理 FlowFile 时发生错误,则 FlowFile 将根据错误类型路由到“failure”或“retry”关系,处理器可以继续处理下一个 FlowFile。相反,您可能需要回滚当前已处理 FlowFiles 并立即停止进一步处理。在这种情况下,您可以通过启用此“失败时回滚”属性来实现此操作。 如果启用,失败的 FlowFiles 将保留在输入关系中,而不会对其进行惩罚,并且会反复处理直至成功处理或通过其他方式将其移除为止。务必设置足够的“结果持续时间”,以避免过于频繁地重试。

关系

名称

描述

failure

如果无法更新数据库,则将一个 FlowFile 路由到此关系,重试此操作也会失败,例如查询无效或违反完整性约束

retry

如果无法更新数据库,则将一个 FlowFile 路由到此关系,但再次尝试操作可能会成功

success

成功更新数据库后,FlowFile 将路由到此关系

写入属性

名称

描述

sql.generated.key

如果数据库为 INSERT 语句生成了键并且“Obtain Generated Keys”属性设置为 True,则如果可能,将添加此属性以指示生成的键。并非所有数据库供应商都支持此功能。

语言: 中文