我要执行select * from table1
,select * from table2
,select * from table3
,... select * from table80
....(基本上从80个不同的表中提取数据并将其发送到
是否可以在一个查询数据库表中提供多个select * statement
,然后将其路由到不同的索引?如果是,流程将如何?
答案 0 :(得分:1)
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}
一些有用的参考文献:
答案 1 :(得分:0)
有两种方法可以解决此问题。
table1
,table2
等,则可以简单地生成80个流文件,每个流文件在属性(即table_count
)中具有唯一的整数值,并使用{ {1}}和GenerateTableFetch
通过表达式语言使用此属性创建查询ExecuteSQL
,users
等),则可以从列出每一行的文件中读取,也可以使用addresses
来查询名称的数据库。然后,您可以执行简单的文本处理,将每个表中创建的流文件拆分为一个,然后按上述步骤继续