Pentaho Kettle-运行检查数据库连接而不停止工作

时间:2015-02-06 18:02:41

标签: kettle pdi

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

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

1 个答案:

答案 0 :(得分:1)

首先,您绝对使用正确的步骤来检查数据库连接。现在针对你的问题,我会试着解释一下(希望我是对的):

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

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

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

enter image description here

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

现在“整个作业停止”部分:由于停止行为很明显(如上所述),你可以做的是传递流程使用“错误跃点”,这样如果作业发现错误,则会跳错误。 检查下面的图片

enter image description here

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

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

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

enter image description here

输出生成一个Connections列表以及一个Error标志。

Y : Failure in connecting to Database
N : successful connection

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

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

希望有所帮助:)