Apache NiFi 2.x:PutSQL 2.2.0
包
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 |
表达式语言作用域
不支持
敏感
否
必填
否
JDBC连接池
指定用于将JSON消息转换为SQL语句的JDBC连接池。连接池对于确定合适的数据库列类型是必要的。
显示名称 | JDBC连接池 |
描述 | 指定用于将JSON消息转换为SQL语句的JDBC连接池。连接池对于确定合适的数据库列类型是必要的。 |
API名称 | JDBC Connection Pool |
服务接口 | org.apache.nifi.dbcp.DBCPService |
服务实现 | org.apache.nifi.dbcp.DBCPConnectionPool |
表达式语言作用域 | 不支持 |
敏感 | 否 |
必填 | 是 |
获取生成的键
如果为true,数据库自动生成的任何键都将使用sql.generate.key属性添加到生成它的FlowFile中。这可能会导致性能略有下降,并且并非所有数据库都支持此功能。
显示名称 | 获取生成的键 |
描述 | 如果为true,数据库自动生成的任何键都将使用sql.generate.key属性添加到生成它的FlowFile中。这可能会导致性能略有下降,并且并非所有数据库都支持此功能。 |
API名称 | Obtain Generated Keys |
默认值 | false |
允许值 | true |
表达式语言作用域
不支持
敏感
否
必填
否
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 |
表达式语言作用域
不支持
敏感
否
必填
是
支持分段事务
如果为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 |
表达式语言作用域
不支持
敏感
否
必填
否
事务超时时间
如果<支持分段事务>属性设置为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'),具体根据 |
写入属性
名称 | 描述 |
sql.generated.key | 如果数据库为INSERT语句生成了一个键,并且“获取生成的键”属性设置为true,则在可能的情况下,将添加此属性以指示生成的键。并非所有数据库供应商都支持此功能。 |