gpt4 book ai didi

sql - Talend:使用已定义的字符串/参数查询数据库

转载 作者:太空狗 更新时间:2023-10-30 01:53:45 25 4
gpt4 key购买 nike

如何对我的数据库执行查询(使用 tOracleInput),例如 Select,并使用已在其他组件中定义为参数的字符串,例如在“tFlowToIterate”中?

例如:“SELECT * from TABLE_X where FIELD_X= ? ;”

我的 '?' 是来 self 的 tFlowToIterate 组件 (foo) 的变量。我已经尝试过 (String)globalMap.get("foo") 和其他类似的形式...

谢谢

[Talend Open Studio for Data Integration v5.3.1; 数据库:甲骨文]

最佳答案

你自己回答的。 tOracleInput 组件接受查询作为参数。这是一个很无聊的java String,不多也不少。这意味着如果你想在查询中使用 globalMap 元素,你只需要做一个 java String 连接。类似的东西:

"SELECT * from TABLE_X where FIELD_X='" + (String)globalMap.get("foo") + "'"

但这不会起作用(仔细看引号):

"SELECT * from TABLE_X where FIELD_X='(String)globalMap.get("foo")'"

请记住,如果您使用字符串连接和外部变量编写查询,查询编辑器可能会弄乱所有引号,生成损坏的查询。

作为一般性建议,我从不建议在数据库输入组件(如 tOracleInput)中使用“*”运算符。 Talend 具有在编译时生成的固定方案结构。这意味着如果有一天您要向 TABLE_X 添加一列,您的 ETL 将会失败。

更强大的解决方案如下:

  1. 用 * 运算符写下您的查询
  2. 单击“Guess Schema”以检索表架构并放入您的组件元数据
  3. 现在单击“猜测查询”以显式重写您的 SELECT
  4. 如果需要,修复查询(即 WHERE 条件,...)

关于sql - Talend:使用已定义的字符串/参数查询数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20371792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com