Apache NiFi 2.x:PutSQL 2.2.0

Apache NiFi 2.x:PutSQL 2.2.0

精选文章moguli202025-03-12 14:17:2912A+A-

org.apache.nifi | nifi-standard-nar

描述

执行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、更新

输入要求

必填

支持敏感动态属性

属性

批处理大小

在单个事务中放入数据库的FlowFile的理想数量。

显示名称

批处理大小

描述

在单个事务中放入数据库的FlowFile的理想数量。

API名称

Batch Size

默认值

100

表达式语言作用域

不支持

敏感

必填

数据库会话自动提交

设置正在使用的数据库连接的自动提交模式。如果设置为false,操作将根据成功或失败分别进行显式提交或回滚;如果设置为true,则由驱动程序/数据库处理提交/回滚。

显示名称

数据库会话自动提交

描述

设置正在使用的数据库连接的自动提交模式。如果设置为false,操作将根据成功或失败分别进行显式提交或回滚;如果设置为true,则由驱动程序/数据库处理提交/回滚。

API名称

database-session-autocommit

默认值

false

允许值

true
false

表达式语言作用域

不支持

敏感

必填

JDBC连接池

指定用于将JSON消息转换为SQL语句的JDBC连接池。连接池对于确定合适的数据库列类型是必要的。

显示名称

JDBC连接池

描述

指定用于将JSON消息转换为SQL语句的JDBC连接池。连接池对于确定合适的数据库列类型是必要的。

API名称

JDBC Connection Pool

服务接口

org.apache.nifi.dbcp.DBCPService

服务实现

org.apache.nifi.dbcp.DBCPConnectionPool
org.apache.nifi.dbcp.DBCPConnectionPoolLookup
org.apache.nifi.dbcp.HikariCPConnectionPool

表达式语言作用域

不支持

敏感

必填

获取生成的键

如果为true,数据库自动生成的任何键都将使用sql.generate.key属性添加到生成它的FlowFile中。这可能会导致性能略有下降,并且并非所有数据库都支持此功能。

显示名称

获取生成的键

描述

如果为true,数据库自动生成的任何键都将使用sql.generate.key属性添加到生成它的FlowFile中。这可能会导致性能略有下降,并且并非所有数据库都支持此功能。

API名称

Obtain Generated Keys

默认值

false

允许值

true
false

表达式语言作用域

不支持

敏感

必填

SQL语句

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

显示名称

SQL语句

描述

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

API名称

putsql-sqlstatement

表达式语言作用域

环境变量和FlowFile属性

敏感

必填

失败时回滚

指定如何处理错误。默认情况下(false),如果在处理FlowFile时发生错误,FlowFile将根据错误类型路由到“failure”或“retry”关系,处理器可以继续处理下一个FlowFile。相反,你可能希望回滚当前正在处理的FlowFile并立即停止进一步处理。在这种情况下,可以通过启用“失败时回滚”属性来实现。如果启用,失败的FlowFile将保留在输入关系中,不会受到惩罚并会被反复处理,直到成功处理或通过其他方式移除。设置适当的“yield Duration”(暂停持续时间)以避免过于频繁地重试非常重要。

显示名称

失败时回滚

描述

指定如何处理错误。默认情况下(false),如果在处理FlowFile时发生错误,FlowFile将根据错误类型路由到“failure”或“retry”关系,处理器可以继续处理下一个FlowFile。相反,你可能希望回滚当前正在处理的FlowFile并立即停止进一步处理。在这种情况下,可以通过启用“失败时回滚”属性来实现。如果启用,失败的FlowFile将保留在输入关系中,不会受到惩罚并会被反复处理,直到成功处理或通过其他方式移除。设置适当的“yield Duration”(暂停持续时间)以避免过于频繁地重试非常重要。

API名称

rollback-onfailure

默认值

false

允许值

true
false

表达式语言作用域

不支持

敏感

必填

支持分段事务

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

显示名称

支持分段事务

描述

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

API名称

Support Fragmented Transactions

默认值

true

允许值

true
false

表达式语言作用域

不支持

敏感

必填

事务超时时间

如果<支持分段事务>属性设置为true,指定在将具有特定fragment.identifier属性的所有FlowFile转移到“failure”关系之前,等待这些FlowFile全部到达的时间。

显示名称

事务超时时间

描述

如果<支持分段事务>属性设置为true,指定在将具有特定fragment.identifier属性的所有FlowFile转移到“failure”关系之前,等待这些FlowFile全部到达的时间。

API名称

Transaction Timeout

表达式语言作用域

不支持

敏感

必填

关系

名称

描述

retry

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

success

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

failure

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

读取属性

名称

描述

fragment.identifier

如果<支持分段事务>属性为true,此属性用于确定两个FlowFile是否属于同一事务。

fragment.count

如果<支持分段事务>属性为true,此属性用于确定完成事务需要多少个FlowFile。

fragment.index

如果<支持分段事务>属性为true,此属性用于确定事务中FlowFile的评估顺序。

sql.args.N.type

传入的FlowFile应为参数化SQL语句。每个参数的类型指定为表示该参数JDBC类型的整数。

sql.args.N.value

传入的FlowFile应为参数化SQL语句。参数的值指定为sql.args.1.value、sql.args.2.value、sql.args.3.value等。sql.args.1.value参数的类型由sql.args.1.type属性指定。在某些情况下,需要指定格式选项,目前这仅适用于二进制数据类型、日期、时间和时间戳。二进制数据类型(默认值为'ascii') - ascii:属性值中的每个字符串字符代表一个字节。这是Avro处理器提供的格式。base64:字符串是一个可以解码为字节的Base64编码字符串。hex:字符串是十六进制编码的,所有字母为大写且开头没有'0x'。日期/时间/时间戳 - 日期、时间和时间戳格式都支持自定义格式或命名格式('yyyy-MM-dd'、'ISO_OFFSET_DATE_TIME'),具体根据
java.time.format.DateTimeFormatter指定。如果未指定,对于日期,长整型输入预期为Unix时间戳(从1970年1月1日起的毫秒数),或者字符串值格式为'yyyy-MM-dd';对于时间,格式为'HH:mm:ss.SSS'(一些数据库引擎,如Derby或MySQL不支持毫秒,将截断毫秒部分);对于时间戳,格式为'yyyy-MM-dd HH:mm:ss.SSS'。

写入属性

名称

描述

sql.generated.key

如果数据库为INSERT语句生成了一个键,并且“获取生成的键”属性设置为true,则在可能的情况下,将添加此属性以指示生成的键。并非所有数据库供应商都支持此功能。

点击这里复制本文地址 以上内容由莫古技术网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

莫古技术网 © All Rights Reserved.  滇ICP备2024046894号-2