PutDatabaseRecord Processor
描述
PutDatabaseRecord 处理器使用指定的记录读取器从传入 FlowFile 输入(可能是多条)记录,并将这些记录写入数据库。
标签
使用场景
将记录插入数据库
属性
| 名称 | 默认值 | 可选值 | 描述 |
|---|---|---|---|
| Record Reader | | 控制器服务 API:RecordReaderFactorycn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 指定用于解析传入数据并确定数据模式的 Controller Service。 |
| 数据库类型 | Generic |
| 用于生成特定于服务或供应商的语句的数据库类型。通用类型支持大多数情况,但选择特定类型可以启用优化处理或额外功能。 |
| Database Dialect Service | | 控制器服务 API:DatabaseDialectServicecn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 数据库方言服务,用于生成特定于特定服务或供应商的语句。 |
| Statement Type | |
| 指定要生成的 SQL 语句类型。请参阅数据库文档了解每种操作的行为说明。请注意,某些数据库类型可能不支持特定的语句类型。如果选择'使用 statement.type 属性',则值取自 FlowFile 中的 statement.type 属性。'使用 statement.type 属性'选项是唯一允许'SQL'语句类型的选项。如果指定'SQL',则'包含 SQL 的字段'属性指定的字段值必须是目标数据库上的有效 SQL 语句,并将按原样执行。 |
| Statement Type Record Path | | 指定一个 RecordPath,用于对每个 Record 进行评估以确定语句类型。RecordPath 的计算结果应为 INSERT、UPDATE、UPSERT 或 DELETE。(也支持 Debezium 风格的操作类型:"r" 和 "c" 表示 INSERT,"u" 表示 UPDATE,"d" 表示 DELETE) | |
| Data Record Path | | 如果指定,此属性表示一个 RecordPath,将对每个传入的 Record 进行评估,评估 RecordPath 后得到的 Record 将被发送到数据库,而不是发送整个传入的 Record。如果未指定,整个传入的 Record 将被发布到数据库。 | |
| Pre-Processing SQL | | 在为每个 FlowFile 处理记录之前,在当前数据库连接上执行的一条或多条以分号分隔的 SQL 语句。
可以通过在分号前加反斜杠字符,在 SQL 语句中包含字面分号。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Post-Processing SQL | | 在为每个 FlowFile 处理记录之后,在当前数据库连接上执行的一条或多条以分号分隔的 SQL 语句。
可以通过在分号前加反斜杠,在 SQL 语句中包含字面分号。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Database Connection Pooling Service | | 控制器服务 API:DBCPServicecn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 用于获取与数据库的连接以发送记录的Controller Service。 |
| Database Name | | 指定语句应更新的数据库(或目录名称,取决于目标系统)。这可能不适用于您正在更新的数据库。在这种情况下,请将字段留空。请注意,如果设置了该属性且数据库区分大小写,则目录名称必须与数据库的目录名称完全匹配。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Schema Name | | 指定表所属的 Schema 名称。这可能不适用于您正在更新的数据库。在这种情况下,请将字段留空。请注意,如果设置了该属性且数据库区分大小写,则 Schema 名称必须与数据库的 Schema 名称完全匹配。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Table Name | | 该语句应影响的表的名称。 请注意,如果数据库区分大小写,则表名必须与数据库的表名完全匹配。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Binary String Format | UTF-8 |
| 将字符串值解码为二进制时要应用的格式。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) |
| Translate Field Names | true |
| 如果为 true,处理器将尝试将字段名称转换为指定表中对应的列名称。如果为 false,则字段名称必须与列名称完全匹配,否则列将不会被更新。 |
| Column Name Translation Strategy | REMOVE_UNDERSCORE |
| 用于规范化表列名称的策略。列名称将被大写以进行大小写不敏感的匹配,与策略无关。 |
| Column Name Translation Pattern | | 列名将使用此正则表达式进行规范化 | |
| Unmatched Field Behavior | Ignore Unmatched Fields |
| 如果传入记录的字段未映射到数据库表的任何列,则此属性指定如何处理这种情况 |
| Unmatched Column Behavior | Fail on Unmatched Columns |
| 如果传入记录没有数据库表所有列的字段映射,则此属性指定如何处理这种情况 |
| Update Keys | | 唯一标识数据库中 UPDATE 语句行的列名的逗号分隔列表。如果语句类型为 UPDATE 且未设置此属性,则使用表的主键。在这种情况下,如果不存在主键,且未匹配列行为设置为 FAIL,则转换为 SQL 将失败。如果语句类型为 INSERT,则忽略此属性。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Delete Keys | | 唯一标识数据库中 DELETE 语句行的列名的逗号分隔列表。如果语句类型为 DELETE 且未设置此属性,则使用表的列。如果语句类型不是 DELETE,则忽略此属性。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Field Containing SQL | | 如果语句类型为'SQL'(在 statement.type 属性中设置),此字段指示 Record 中哪个字段包含要执行的 SQL 语句。该字段的值必须是单个 SQL 语句。如果语句类型不是'SQL',则忽略此字段。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Allow Multiple SQL Statements | false |
| 如果语句类型为'SQL'(在 statement.type 属性中设置),此字段指示是否按分号拆分字段值并分别执行每条语句。如果任何语句导致错误,整个语句集将被回滚。如果语句类型不是'SQL',则忽略此字段。 |
| Quote Column Identifiers | false |
| 启用此选项将导致所有列名被引用,从而允许您使用保留字作为表中的列名。 |
| Quote Table Identifiers | false |
| 启用此选项将导致表名被引用,以支持在表名中使用特殊字符。 |
| Max Wait Time | 0 seconds | 正在运行的 SQL 语句允许的最大时间,零表示没有限制。最大时间小于 1 秒将等于零。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| Rollback On Failure | false |
| 指定如何处理错误。 默认情况下(false),如果在处理 FlowFile 时发生错误,FlowFile 将根据错误类型路由到 'failure' 或 'retry' 关系,处理器可以继续处理下一个 FlowFile。 相反,您可能希望回滚当前处理的 FlowFile 并立即停止进一步处理。 在这种情况下,您可以通过启用此 'Rollback On Failure' 属性来实现。 如果启用,失败的 FlowFile 将保留在输入关系中而不受惩罚,并被重复处理 直到成功处理或通过其他方式移除。 设置适当的 'Yield Duration' 以避免过于频繁地重试很重要。 |
| Table Schema Cache Size | 100 | 指定应缓存多少个表模式 | |
| Maximum Batch Size | 1000 | 指定每个批次发送到数据库的最大 SQL 语句数量。零表示批次大小不受限制,所有语句都放入单个批次中,对于大量语句可能导致高内存使用问题。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Database Session AutoCommit | false |
| 设置在使用的数据库连接上的自动提交模式。如果设置为 false,操作将根据成功或失败分别显式提交或回滚。如果设置为 true,驱动程序/数据库将自动处理提交/回滚。 |
关系 (Relationships)
| 名称 | 描述 | 自动终止 |
|---|---|---|
failure | 如果数据库无法更新且重试操作也将失败(例如无效查询或完整性约束违规),则 FlowFile 将被路由到此关系 | 否 |
retry | 如果数据库无法更新,则 FlowFile 将路由到此关系,但再次尝试操作可能会成功 | 否 |
success | 已成功从 SQL 查询结果集创建 FlowFile。 | 否 |
读取的 FlowFile 属性
| 名称 | 描述 |
|---|---|
statement.type | 如果为 Statement Type 属性选择了 'Use statement.type Attribute',则此属性的值将用于确定要生成和执行的语句类型(INSERT、UPDATE、DELETE、SQL 等)。 |
写入的 FlowFile 属性
| 名称 | 描述 |
|---|---|
putdatabaserecord.error | 如果处理过程中发生错误,FlowFile 将路由到 failure 或 retry,此属性将被填充错误原因。 |
状态管理
该组件不存储状态。
受限 (Restricted)
该组件不受限。
输入要求
该组件要求有传入连接。