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

Pentaho Kettle- run check db connections without stopping job

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

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

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

案例一:"My problem is when a DB connection is not available, the whole job stops"

这种情况是显而易见的。每当步骤发现任何错误时,它都会抛出异常并停止整个作业的执行。

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

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

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

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

案例二:"log errors for inaccessible DBs and create a new dynamic list of successful tests"

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

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

Y : Failure in connecting to Database
N : successful connection

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

我已将示例代码放在 gist 中。您可以查看您的参考资料。

希望对您有所帮助:)