2015-02-06 590 views
1

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

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

回答

1

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

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

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

但是,这是否意味着如果连接出错,步骤“检查Db连接”将停止检查数据库连接。答案是NO。该步骤将完成测试所有连接,即使它在中间连接中出现错误。试着仔细观察日志,它会给你所有的检查DB连接的最终汇总列表(查看下图)

enter image description here

我试着用4个DB连接测试外面我得到了一个错误和三个成功。

现在为“整个工作停止”部分:由于停车的行为是明显的(如我所提到的),你可以做的是通过使用“错误跳”,使流动如果作业发现错误,它将采用错误跳跃。 检查图像下方

enter image description here

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

案例二:“错误记录为不可访问DB和创造的成功测试一种新的动态列表”

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

enter image description here

输出与错误标志一起生成的连接的列表。

Y : Failure in connecting to Database 
N : successful connection 

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

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

希望它有帮助:)

+0

感谢您的详细解释Rishu,这就是我所缺少的。这太棒了!我没有在DBconnections步骤中使用错误检查。现在工作很好! – Patrick 2015-02-09 15:23:15

+0

欢迎@帕特里克:)高兴地帮助! – Rishu 2015-02-09 17:07:00