Pentaho Kettle - 在不停止作业的情况下运行检查数据库连接

Posted

技术标签:

【中文标题】Pentaho Kettle - 在不停止作业的情况下运行检查数据库连接【英文标题】:Pentaho Kettle- run check db connections without stopping job 【发布时间】:2015-02-06 18:02:40 【问题描述】:

我已阅读博客和one question close to mine,但尚未找到解决问题的方法。我有一个转换作业设置,可以从 84 个数据库中提取三个表以生成一个报告。我的问题是当数据库连接不可用时,整个工作都会停止。

我希望能够在初始化作业之前检查数据库连接,记录无法访问的数据库的错误,并创建一个新的成功测试动态列表,然后我将从中运行我的作业。我已经使用了检查数据库连接步骤,但是当连接为假时它仍然会停止。如何处理我的数据库列表,一直运行到最后,而不中止工作?

【问题讨论】:

【参考方案1】:

首先,您绝对使用了正确的步骤来检查数据库连接。现在对于您的问题,我将尝试分部分解释(希望我是正确的):

案例一:“我的问题是当数据库连接不可用时,整个工作都停止了”

这种情况很明显。每当一个步骤发现任何错误时,它都会抛出一个异常并停止整个 Job 的执行。

但这是否意味着如果连接出错,步骤“检查数据库连接”将停止检查数据库连接。答案是。即使在中间的某个连接中出现错误,Step 也会完成所有连接的测试。尝试仔细观察日志,它会为您提供所有已检查数据库连接的最终综合列表(查看下图)

我尝试使用 4 个数据库连接进行测试,其中一个错误和 3 个成功。

现在对于“Whole Job Stops”部分:由于停止行为很明显(正如我上面提到的),您可以做的是传递流程使用“Error hop”,这样如果作业发现错误,它将进行错误跳跃。 查看下面的图片

这里我使用了两个跃点:一个成功和一个错误。如果作业失败,它将采用错误路径(红色跃点),否则它将采用成功路径(绿色跃点)

案例二:“记录无法访问的数据库的错误并创建新的成功测试动态列表”

您可以将错误记录到单独的日志文件或表中(取决于您的要求),然后通读日志以生成数据库连接列表。查看下图:

输出会生成一个连接列表以及一个错误标志。

Y : Failure in connecting to Database
N : successful connection

注意:我使用文本文件输入,因为我已将上一步记录到文本文件而不是数据库中。您可以根据自己的需求进行自定义。

我已将示例代码放在gist 中。你可以检查你的参考。

希望对你有帮助:)

【讨论】:

感谢Rishu的详细解释,这就是我所缺少的。这太棒了!我没有在 DBconnections 步骤中使用错误检查。现在工作得很好!

以上是关于Pentaho Kettle - 在不停止作业的情况下运行检查数据库连接的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pentaho Kettle,我可以在不预先组合数据流的情况下将数据输入到数据库表并生成连接吗?

如何使用 Kettle Pentaho 删除远程文件

Pentaho Kettle:邮寄转换的结果

从 Pentaho Kettle Job 的 java api 调用中获取数据

PDI(Pentaho Kettle)Jar 文件的 Maven 依赖项

如何在 Carte 上运行的 Pentaho Kettle Job 中为数据库日志连接名称使用变量?