首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于蜂箱输入的mysql中Talend查询数据

基于蜂箱输入的mysql中Talend查询数据
EN

Stack Overflow用户
提问于 2014-08-01 08:33:57
回答 1查看 974关注 0票数 3

我需要在Hive中查询列,并根据MySQL DB中的输出查询它。

流程如下所示:

  1. 查询Hive表,获取ID列表
  2. 使用ID列表查询MySQL表。查询将类似于select a,b,c from x where id in (list from hive)

我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-01 08:48:45

您只需要使用tHiveInput组件进行查询以检索Id,然后就有两个选项:简单的方式或硬的(更好的)方式:

为了简单起见,您可以从tHiveInput组件运行到tFlowToIterate,然后迭代到tMySqlInput组件。然后,tMySqlInput组件中的查询将类似于:

代码语言:javascript
复制
"SELECT a, b, c
FROM x
WHERE id = '" + ((Integer)globalMap.get("row1.id")) + "'"

这里的row1表示运行到tFlowToIterate中的行。您还可以通过点击ctrl+space并选择tFlowToIterate_x.id选项来获得这个变量。

然后,您可以将一个tBufferOutput组件连接到您的tMySqlInput组件,以收集所有迭代,然后使用tBufferInput组件将其读取回来,以便进行进一步的处理。

这显然是一个简单的级联,因此并不是提高效率的最佳方法,当然也不适合于SQL注入。但这是一条艰难而又准备就绪的道路。

您的另一个选项(更难但可能更好)是使用tMySqlRow组件使用参数化查询(目前tMySqlInput组件中不支持Talend5.4)。

这个答案详细介绍了Talend中的参数化查询,作为另一个问题的解决方案的一部分(高效地向上插入)。正如在这个答案中提到的,关于加布里埃尔·巴尔达萨雷的博客上的参数化查询还有更多的细节。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25076046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档