在本 Talend 部分,我们讨论 Talend 拒绝行或将失败的记录捕获到表或文本文件中。在作业运行时捕获失败或被拒绝的行至关重要。我们可以使用该日志进行查看和清理数据以进行进一步处理。
在我们之前的所有 Talend 文章中,我们一直向您展示如何将成功处理的数据加载到表或文本文件中。我们从未向您透露过 Talend 拒绝行或错误日志,我们在这里将涵盖这些内容!
为了演示拒绝行,我们使用了下面的文本文件。

Talend 拒绝行示例
我们使用 tDBConnection 和 tDBCommit 来建立和关闭与 SQL 数据库的连接。接下来,我们使用 tFileDelimitedInput 将上述文本文件加载到 Talend 中。请单击“编辑模式”以添加列名或使用现有的文件分隔模式(如果有)。

请使用 tLogRow 运行此作业,以在文本文件中查看数据。在这里,我们删除了/替换了 tLogRow 为 tDBOutput,因为我们想将此文本文件 加载到数据库表中。接下来,我们使用了现有的连接并放置了表名。

单击“编辑模式”以查看或更改输出列。如果您注意到 DBOutput 列的长度,它们会短得多,无法容纳文本文件数据。如果您正在 创建表,那么您可能需要更改长度来存储所有数据。但是,当我们使用现有表时,我们没有选项可以更改表结构,并考虑这种情况。

运行 Talend 拒绝行作业后,您将看到数据截断消息六次。

让我打开 Management Studio,您会看到它有四条记录,并且它们符合数据长度。

一直以来,我们都从上下文菜单中选择“行主”选项。但是,我们还有另一个选项,即“行拒绝”,这就是我们捕获 Talend 拒绝行的地方。

接下来,我们使用 tMap 处理那些被拒绝的行。然后我们使用 tLogRow 以表格格式显示那些被拒绝的行。

让我打开 tMap 编辑器。我们将所有行从 tDBOutput 添加到 tMap。如果您注意到,它有两个额外的列:错误代码(错误编号)和错误消息。

运行此 Talend tMap 作业后,您将看到所有被拒绝的行以及错误代码和相应的错误消息。

我们使用 tFileDelimitedOutput 将这些被拒绝的行保存在文本文件中。在这里,我们使用逗号作为列分隔符。

现在,您可以在文本文件中看到所有被拒绝的行、错误代码和错误消息。

在某些情况下,我们需要将所有 Talend 作业的被拒绝行保存在单个文件或表中。在这种情况下,我们需要为所有表(具有不同列)使用相同的模式。在这种情况下,我们使用一个列来保存特定表的(列)的所有信息,第二个列用于错误代码,最后一个列用于错误消息。
让我打开 tMap 来连接表中的所有列并写入以下表达式。这意味着字符串类型的 EmpID 存储所有员工的信息,并且每个列都用 | 符号分隔。

我们将这些记录存储在上述指定的文本文件中。所以,让我更改模式并从系统中删除现有的文本文件。接下来,请运行作业以查看结果。
现在您可以看到我们的文件有三列,EmpID 列包含所有员工表列。
