sql - 在NiFi的QueryDatabaseTable中执行多个Select *
问题描述
我想执行select * from table1
, select * from table2
, select * from table3
, select * from table80
.... ....(基本上从 80 个不同的表中提取数据并将数据发送到Elasticsearch(Kibana)中的 80 个不同的索引。
我是否可以在一个查询数据库表中提供多个select * statement
,然后将其路由到不同的索引?如果是,流程会是怎样的?
解决方案
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}
一些有用的参考:
推荐阅读
- ionic-framework - 如果专注于 Ionic 3,iframe 会再次重新加载
- java - 为什么我们需要参数化的构造函数
- sql - 如何删除多个列 IN\NOT IN 其他表?
- azure-devops - Azure Pipelines 在单个存储库中构建多个解决方案
- google-bigquery - 修改 BigQuery 运算符以显式传递 JobId 参数 AirFlow 运算符
- php - 如何进行循环语句,从上一页获取值?
- javascript - 递归获取嵌套对象中给定节点的完整路径(父层次结构)
- javascript - jstree 使用 contextmenu 插件和 laravel 创建编辑重命名函数
- javascript - PhpStorm 调试器:如何忽略 webpack 开发服务器提供的脚本(node_modules)
- amazon-dynamodb - 如何使用 Data Pipeline 导出具有按需配置的 DynamoDB 表