Skip to main content

GenerateTableFetch

描述:

生成从表中获取“页”的SQL查询。分区大小属性以及表的行数确定页面的大小和数量以及生成的FlowFiles。此外,可以通过设置最大值列来实现增量提取,这会使组件跟踪列的最大值,从而仅获取列的值超过最大值的行。此组件仅用于在主节点上运行。

此组件可以接受传入连接;组件的行为依据是否提供传入连接而不同\uff1a 如果未指定传入连接,则组件将根据指定的组将计划生成SQL查询。许多字段支持表达式语言,但没有可用的流文件属性。但是,可以使用变量注册表匹配属性。 如果指定了传入连接且没有可用于组件任务的流文件,则不会执行任何工作。 如果指定了传入连接并且流文件可用于处组将任务,流文件的属性可以在表达式语言中用于诸如表名等字段。但是,Max-Value Columns和Columns to Return字段必须为空或引用每个指定表中可用的列。

标签:

sql, select, jdbc, query, database, fetch, generate

参数:

如下列表中,必填参数则标识为加粗. 其他未加粗参数,则表示为可选参数。表中同时提到参数默认值设置, 并且 参数还支持 表达式语言.

名字默认值允许值列表描述
数据库连接池控制器服务API:
DBCPService
实现:
DBCPConnectionPoolLookup
DBCPConnectionPool
用于获取与数据库连接池的服务
数据库类型通用
- 通用标准ANSI SQL
- Oracle生成符合Oracle标准的SQL
- Oracle 12+生成符合Oracle 12+或更高版本标准的SQL
- MS SQL 2012+生成符合OMS SQL 2012+标准的SQL
- MS SQL 2008生成符合MS SQL 2008标准的SQL
- MySQL生成符合MySQL标准的SQL
数据库的类型/风格,用于生成特定数据库的代码。 在许多情况下,"通用"类型应该足够,但是某些数据库(例如Oracle)需要自定义SQL子句。
要查询的数据库表的名称。

支持表达式语言 (支持流属性和变量)
返回列名查询中使用的以逗号分隔的列名列表。 如果您的数据库需要对名称进行特殊处理(例如引用),则每个名称都应包含此类处理。 如果未提供列名,则将返回指定表中的所有列。 注意:对于给定的表使用一致的列名称以使增量提取正常工作非常重要。

支持表达式语言 (支持流属性和变量)
最大值列以逗号分隔的列名列表。 组件将跟踪自组件开始运行以来返回的每列的最大值。 使用多列意味着列表的顺序,并且预期每列的值比前一列的值增加得更慢。 因此,使用多列意味着列的分层结构,通常用于分区表。 此组件可用于仅检索自上次检索以来已添加/更新的那些行。 请注意,某些JDBC类型(如bit / boolean)不利于维护最大值,因此不应在此属性中列出这些类型的列,并且在处理期间将导致错误。 如果未提供列,则将考虑表中的所有行,这可能会对性能产生影响。 注意:为给定表使用一致的最大值列名称以使增量提取正常工作。

支持表达式语言 (支持流属性和变量)
等待时长0 seconds运行SQL SELECT查询允许的最长时间,零表示没有限制。 小于1秒的最大时间将等于零。

支持表达式语言 (支持流属性和变量)
分区大小10000每个SQL语句结果中要提取的行数。 表中的总行数除以分区大小,得出生成的SQL语句(即数据流)的数量。 值为零表示将生成单个数据流,其SQL语句将获取表中的所有行。

支持表达式语言 (支持流属性和变量)
分区列指定列名,该列名相应的值将用于分区。 The default behavior is to use row numbers on the result set for partitioning into 'pages' to be fetched from the database, using an offset/limit strategy. However for certain databases, it can be more efficient under the right circumstances to use the column values themselves to define the 'pages'. This property should only be used when the default queries are not performing well, when there is no maximum-value column or a single maximum-value column whose type can be coerced to a long integer (i.e. not date or timestamp), and the column values are evenly distributed and not sparse, for best performance.

支持表达式语言 (支持流属性和变量)
额外WHERE条件添加额外的where查询条件

支持表达式语言 (支持流属性和变量)

动态参数:

名字描述
initial.maxvalue.<max_value_column>Initial maximum value for the specified columnSpecifies an initial max value for max value columns. Properties should be added in the format initial.maxvalue.<max_value_column>. This value is only used the first time the table is accessed (when a Maximum Value Column is specified). In the case of incoming connections, the value is only used the first time for each table specified in the flow files.
支持表达式语言 (支持流属性和变量)

连线:

名字描述
success从SQL查询结果集成功创建数据流后,输出到此连线。
failure仅当SQL查询执行(使用传入的数据流)失败时使用此连线。 传入的数据流将受到处罚并被路由到此连线。 如果未指定传入连接,则不使用此连线。

读取属性:

未提供。

写入属性:

名字描述
generatetablefetch.sql.error如果组件具有传入连接,并且处理传入流文件导致SQL异常,则流文件将路由到失败,并且此属性将设置为异常消息。
generatetablefetch.tableName要查询的数据库表的名称。
generatetablefetch.columnNames查询中使用的以逗号分隔的列名列表。
generatetablefetch.whereClause在查询中使用Where子句来获取预期结果。
generatetablefetch.maxColumnNames逗号分隔的列名列表,用于跟踪自组件开始运行以来已返回的数据。
generatetablefetch.limitSQL语句要提取的结果行数。
generatetablefetch.offset用于检索相应分区的偏移量

状态管理:

范围描述
CLUSTER在对指定的表执行查询后,将保留指定列的最大值,以便在将来执行查询时使用。 这允许组件仅获取最大值大于保留值的记录。 这可以用于增量提取,提取新添加的行等。要清除最大值,请根据状态管理文档清除处理器的状态

限制:

该组件没有限制

输入流要求:

组件允许提供输入流。

系统资源考量:

未提供。

参考:

ExecuteSQL, ListDatabaseTables, QueryDatabaseTable