如何在从 tMySqlOutput 捕获被拒绝的行的同时加快数据传输速度



我正在将数据从一个模式中的表传输到另一个架构中的表。我还需要记录由于众多原因之一而被拒绝的行,例如,NOT NULL 的约束失败。

当我将拒绝链路与输出组件连接时,传输速度急剧下降到每秒 2-3 行。另一方面,如果没有拒绝链接,我可以使用"扩展插入"选项,速度增加到每秒 400 行。

如何在不影响性能的情况下捕获被拒绝的行?

在我看来没有完美的选择:在您的情况下,我认为最好的办法是在插入之前尝试捕获空字段,并在 tDBOutput 之前放置一个 tMap:在那里你可以在输出上有一个过滤器("row.field1 不是空的"(,第二个输出专用于输出拒绝。这样,您可以获取被拒绝的数据,并且仍然使用扩展插入以获得更好的性能。

我同意@Corentin上面建议的方法。我用同样的想法为我的问题想出了一个有效的解决方案。在违反约束的情况下,我不会让数据库返回每行的错误,而是使用组件 tSchemaComplianceCheck 检查 Talend 中的拒绝,该组件包含与目标表完全相同的模式并执行拒绝链接来自此组件。

最新更新