首页 > 解决方案 > 在NiFi的QueryDatabaseTable中执行多个Select *

问题描述

我想执行select * from table1, select * from table2, select * from table3, select * from table80.... ....(基本上从 80 个不同的表中提取数据并将数据发送到Elasticsearch(Kibana)中的 80 个不同的索引。

我是否可以在一个查询数据库表中提供多个select * statement,然后将其路由到不同的索引?如果是,流程会是怎样的?

标签: sqlmysql-workbenchapache-nifidata-extraction

解决方案


QueryDatabaseTable不允许传入连接,所以它是not possible

但是您可以通过以下流程实现相同的用例

流动:

1. ListDatabaseTables
2. RouteOnAttribute //*optional* filter only required tables
3. GenerateTableFetch //to generate pages of sql queries and store state
4. RemoteProcessGroup (or) Load balance connection
5. ExecuteSql //run more than one concurrent task if needed
6. further processing
7. PutElasticSearch.

此外,如果您不想运行流程,请incrementally移除GenerateTableFetch处理器

  • ExecuteSql将处理器选择查询配置为

    select * from ${db.table.schema}.${db.table.name}

一些有用的参考:


推荐阅读