如何将 db(oracle) 查询的结果存储为全局变量,以便在 talend 的 RUN-IF 条件中使用?
Posted
技术标签:
【中文标题】如何将 db(oracle) 查询的结果存储为全局变量,以便在 talend 的 RUN-IF 条件中使用?【英文标题】:How do i store the results from an db(oracle) query as a global variable to be used in a RUN-IF condition in talend? 【发布时间】:2021-01-22 02:11:48 【问题描述】:我有一个 dbinput 组件,我在其中使用如下 select 语句:
“select file_name,file_size from dat_file where file_name = '"+(String)globalMap.get("tFileList_1_CURRENT_FILE")+"' order by file_name desc
”
我想将file_name
和file_size
的值捕获到全局变量中,我可以使用RUNIF 条件来验证filelist_1
文件夹中的文件名和大小是否与db-IGNORE 中的相同
仅当文件名和大小不同时 - 然后继续 talend 中的其余处理。
顺便说一句,我正在从 tfileproperties 组件获取文件大小,并检查它们在数据库和本地文件夹/目录中是否相同,并且只有当它不同时才能继续处理!
我的工作流程如下所示:
【问题讨论】:
【参考方案1】:您的查询是将 tFileList 中的 FileName 与 DB 中的 FileName 进行比较。为了实现您想要的,我认为您还应该在此查询中比较 FileSize。然后您可以在 RUNIF 条件中检查 tDBInput 中的行数(使用全局变量 tDBInput_2_NB_LINE)如果为 0,那么您没有匹配项,您可以继续该过程
【讨论】:
非常感谢您提供精彩的提示,非常感谢...您是最棒的...但正在考虑是否有任何方法可以存储 select 语句中的值 (dbinput2)将 eg.filename 和 filesize 放入一个全局变量中,这样我就可以在下游组件中使用它们,无论是 tjava 还是少数几个组件? 我希望看到除了 tlogrow 之外的 tdbinput2 的其他组件中使用的值...因为我似乎无法找到存储和检索值的方法,尤其是在查询数据库之后!跨度> 尝试输入 tDBInput-->tJavaRow 。在 tJava 行中: globalMap.put("filename",input_row.filename);然后您可以在工作中的任何地方使用 ((String)globalMap.get("filename")) 调用您的全局变量 我尝试了几种方法并在互联网上大肆寻找更好的解决方案,但它们都不是我所期望的,请找到我的问题的链接:***.com/questions/64258690/… 基本上我需要要以更快有效的方式从远程 ftp 站点查找最近 2 天的文件,tjava 代码是不够的,因为文件名中有很多字段 还添加了 java 代码,请看一下并建议我在那里缺少什么?@corentin以上是关于如何将 db(oracle) 查询的结果存储为全局变量,以便在 talend 的 RUN-IF 条件中使用?的主要内容,如果未能解决你的问题,请参考以下文章