我的问题是,如何运行2个不同的"执行SQL脚本"步骤,以便它们在同一个会话中运行,而不是在2个不同的会话中运行?
在我的转换中,我需要在转换过程的最初阶段运行一个sql脚本,以允许在表上进行修改。然后,我从一个数据库中提取数据,操纵它们,并根据结果我需要调用一些过程(使用另一个sql脚本)来更新转换状态。如果第一个sql不是,我就无法更新状态已执行,未获得许可。
搜索只给出了2个结果:
我正在使用Oracle数据库和水壶5.1.0。
更新:
在这张图片中,我有2"执行SQL脚本"按顺序执行步骤,通过适当的步骤阻止。看起来这个脚本在2个不同的数据库连接(会话)中执行,所以第二个脚本没有看到第一个脚本的效果。
答案 0 :(得分:2)
主要观点是"执行每一行?"选项"执行SQL语句"步。此选项稍微改变了步骤的行为。此步骤的Pentaho wiki说"选择此选项可为每个传入行执行SQL。在这种情况下,可以使用参数。 取消选中此选项时,将在步骤初始化阶段执行SQL语句。"。正是我需要的。但我想知道为什么开发人员将两种不同的功能放在一个选项中?
答案 1 :(得分:1)
我前段时间已经完成了相同的发现过程。 事实证明,您需要的是定义运行两个转换的作业。 在转换中,您无法保证顺序执行。下游步骤可能在其上游"上游步骤之前开始运行。完成。如果您的转换依赖于外部效果(例如对外部SQL数据库的修改),那么您将无法在一次转换中实现所需。 作业允许您完全控制它们触发的转换顺序。
这些是您需要采取的步骤: