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 格式。
输入要求¶
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,则如果可能,将添加此属性以指示生成的键。并非所有数据库供应商都支持此功能。 |