我正在将数据从一个模式中的表传输到另一个模式中的表。我还需要记录在进程中被拒绝的行,因为其中一个原因,例如,非空失败的约束。
当我将拒绝链接与输出组件连接在一起时,传输速度急剧下降到每秒2-3行。另一方面,没有拒绝链接,我可以使用“扩展插入”选项,速度提高到每秒400行。
如何在不影响性能的情况下捕获被拒绝的行?
发布于 2019-06-14 07:58:39
我同意@Corentin上面建议的方法。我用同样的想法为我的问题找到了一个有效的解决方案。我不是让DB在打破约束的情况下为每一行返回一个错误,而是在Talend中检查拒绝,使用包含与目标表完全相同的模式的组件tSchemaComplianceCheck,&从该组件执行拒绝链接。
发布于 2019-06-14 07:31:18
在我看来,没有完美的选择:在您的情况下,我认为最好的做法是在插入之前捕获空字段,将一个tMap放在tDBOutput之前:在输出上可以有一个过滤器("row.field1不是null"),还有一个专门用于输出拒绝的输出。这样您就可以获得被拒绝的数据,并且仍然使用扩展的insert来获得更好的性能。
https://stackoverflow.com/questions/56580892
复制相似问题