Apache NiFi 2.x处理器:ListDatabaseTables 2.3.0
包
org.apache.nifi | nifi-standard-nar
描述
生成一组流文件(flow files),每个流文件包含与数据库连接中表的元数据相对应的属性。获取表的元数据后,在刷新间隔(若已设置)过去或手动清除状态之前,不会再次获取该表的元数据。
标签
database、jdbc、list、sql、table
输入要求
不允许
是否支持敏感动态属性
否
属性
- Include Count:是否将表的行数作为流文件属性包含在内。这会影响性能,因为会为检索列表中的每个表生成一个数据库查询。
- 显示名称:Include Count
- 描述:是否将表的行数作为流文件属性包含在内。这会影响性能,因为会为检索列表中的每个表生成一个数据库查询。
- API名称:list-db-include-count
- 默认值:false
- 允许值:true、false
- 表达式语言作用域:不支持
- 是否敏感:否
- 是否必需:是
- Refresh Interval:在重置处理器状态之前要经过的时间,这会导致列出所有当前的表。在此时间间隔内,处理器可能会继续运行,但已经列出的表不会重新列出。不过,在处理器运行时,新添加的表会被列出。值为零意味着状态永远不会自动重置,用户必须手动清除状态。
- 显示名称:Refresh Interval
- 描述:在重置处理器状态之前要经过的时间,这会导致列出所有当前的表。在此时间间隔内,处理器可能会继续运行,但已经列出的表不会重新列出。不过,在处理器运行时,新添加的表会被列出。值为零意味着状态永远不会自动重置,用户必须手动清除状态。
- API名称:list-db-refresh-interval
- 默认值:0秒
- 表达式语言作用域:不支持
- 是否敏感:否
- 是否必需:是
- Catalog:从中列出数据库表的目录名称。该名称必须与数据库中存储的目录名称匹配。如果未设置此属性,则目录名称不会用于缩小表的搜索范围。如果该属性设置为空字符串,则会列出没有目录的表。
- 显示名称:Catalog
- 描述:从中列出数据库表的目录名称。该名称必须与数据库中存储的目录名称匹配。如果未设置此属性,则目录名称不会用于缩小表的搜索范围。如果该属性设置为空字符串,则会列出没有目录的表。
- API名称:listdb-tables-catalog
- 表达式语言作用域:不支持
- 是否敏感:否
- 是否必需:否
- Database Connection Pooling Service:用于获取数据库连接的控制器服务。
- 显示名称:Database Connection Pooling Service
- 描述:用于获取数据库连接的控制器服务。
- API名称:list-db-tables-db-connection
- 服务接口:org.apache.nifi.dbcp.DBCPService
- 实现类:org.apache.nifi.dbcp.DBCPConnectionPool、org.apache.nifi.dbcp.DBCPConnectionPoolLookup、org.apache.nifi.dbcp.HikariCPConnectionPool
- 表达式语言作用域:不支持
- 是否敏感:否
- 是否必需:是
- Table Name Pattern:用于匹配数据库中表的模式。在模式中,“%” 表示匹配0个或多个字符的任意子字符串,“_” 表示匹配任意一个字符。该模式必须与数据库中存储的表名匹配。如果未设置此属性,则会检索所有表。
- 显示名称:Table Name Pattern
- 描述:用于匹配数据库中表的模式。在模式中,“%” 表示匹配0个或多个字符的任意子字符串,“_” 表示匹配任意一个字符。该模式必须与数据库中存储的表名匹配。如果未设置此属性,则会检索所有表。
- API名称:list-db-tables-namepattern
- 表达式语言作用域:不支持
- 是否敏感:否
- 是否必需:否
- Schema Pattern:用于匹配数据库中模式(schema)的模式。在模式中,“%” 表示匹配0个或多个字符的任意子字符串,“_” 表示匹配任意一个字符。该模式必须与数据库中存储的模式名称匹配。如果未设置此属性,则模式名称不会用于缩小表的搜索范围。如果该属性设置为空字符串,则会列出没有模式的表。
- 显示名称:Schema Pattern
- 描述:用于匹配数据库中模式(schema)的模式。在模式中,“%” 表示匹配0个或多个字符的任意子字符串,“_” 表示匹配任意一个字符。该模式必须与数据库中存储的模式名称匹配。如果未设置此属性,则模式名称不会用于缩小表的搜索范围。如果该属性设置为空字符串,则会列出没有模式的表。
- API名称:list-db-tables-schema-pattern
- 表达式语言作用域:不支持
- 是否敏感:否
- 是否必需:否
- Table Types:要包含的表类型的逗号分隔列表。例如,某些数据库支持TABLE和VIEW类型。如果未设置此属性,则会返回所有类型的表。
- 显示名称:Table Types
- 描述:要包含的表类型的逗号分隔列表。例如,某些数据库支持TABLE和VIEW类型。如果未设置此属性,则会返回所有类型的表。
- API名称:list-db-tablestypes
- 默认值:TABLE
- 表达式语言作用域:不支持
- 是否敏感:否
- 是否必需:否
- Record Writer:指定用于创建列表的记录写入器。如果未指定,将为列出的每个实体创建一个流文件。如果指定了记录写入器,所有实体将被写入单个流文件,而不是为单个流文件添加属性。
- 显示名称:Record Writer
- 描述:指定用于创建列表的记录写入器。如果未指定,将为列出的每个实体创建一个流文件。如果指定了记录写入器,所有实体将被写入单个流文件,而不是为单个流文件添加属性。
- API名称:recordwriter
- 服务接口:org.apache.nifi.serialization.RecordSetWriterFactory
- 实现类:org.apache.nifi.avro.AvroRecordSetWriter、org.apache.nifi.csv.CSVRecordSetWriter、org.apache.nifi.text.FreeFormTextRecordSetWriter、org.apache.nifi.json.JsonRecordSetWriter、org.apache.nifi.lookup.RecordSetWriterLookup、org.apache.nifi.record.script.ScriptedRecordSetWriter、org.apache.nifi.xml.XMLRecordSetWriter
- 表达式语言作用域:不支持
- 是否敏感:否
- 是否必需:否
状态管理
作用域 | 描述 |
CLUSTER | 在执行表的列出操作后,查询的时间戳会被存储。这使得处理器在下次运行时无需重新列出表。在处理器属性中指定刷新间隔意味着,当处理器检测到间隔已过,状态将被重置,从而重新列出表。此处理器仅适用于在主节点上运行。 |
关系
名称 | 描述 |
success | 所有接收到的流文件都被路由到success |
写入属性
名称 | 描述 |
db.table.name | 包含来自连接的数据库表的名称 |
db.table.catalog | 包含表所属目录的名称(可能为null) |
db.table.schema | 包含表所属模式的名称(可能为null) |
db.table.fullname | 包含完全限定的表名(可能包括目录、模式等) |
db.table.type | 包含来自连接的数据库表的类型。常见类型有 “TABLE”、“VIEW”、“SYSTEM TABLE”、“GLOBAL TEMPORARY”、“LOCAL TEMPORARY”、“ALIAS”、“SYNONYM” |
db.table.remarks | 包含来自连接的数据库表的名称 |
db.table.count | 包含表中的行数 |
涉及其他组件的用例
对数据库进行全量加载,从所有表或特定表集中检索所有行
- 描述:对数据库进行全量加载,从所有表或特定表集中检索所有行。
- 关键词:full load、rdbms、jdbc、database
- 处理器配置:org.apache.nifi.processors.standard.ListDatabaseTables
步骤 | 纯文本描述 |
1 | 配置 “Database Connection Pooling Service” 属性,指定适用于与你的数据库进行交互的连接池。 |
2 | 不设置RecordWriter属性。 |
3 | |
4 | 将 “Catalog” 属性设置为数据库目录的名称;留空则包含所有目录。 |
5 | 将 “Schema Pattern” 属性设置为与所有应包含的数据库模式匹配的Java正则表达式;留空则包含所有模式。 |
6 | 将 “Table Name Pattern” 属性设置为与所有应包含的表名匹配的Java正则表达式;留空则包含所有表。 |
7 | |
8 | 将 “success” 关系连接到GenerateTableFetch。 |
org.apache.nifi.processors.standard.GenerateTableFetch
步骤 | 纯文本描述 |
1 | 配置 “Database Connection Pooling Service” 属性,指定与在ListDatabaseTables中使用的相同连接池。 |
2 | 设置 “Database Type” 属性,使其与你的RDBMS供应商的相应值匹配。 |
3 | 设置 “Table Name” 为 ${db.table.fullname}。 |
4 | 不设置RecordWriter属性。 |
org.apache.nifi.processors.standard.ExecuteSQLRecord
步骤 | 纯文本描述 |
1 | 将 “success” 关系连接到ExecuteSQLRecord。 |
2 | 配置 “Database Connection Pooling Service” 属性,指定与在ListDatabaseTables中使用的相同连接池。 |
3 | 配置 “Record Writer” 属性,指定适合所需输出数据类型的记录写入器。 |
4 | 不设置 “SQL select query”。 |
5 | 将 “success” 关系连接到流中的下一个处理器。 |