这是我的第一个Talend ETL工作。我设法创造了一份工作。但它从第一个数据库获取所有数据并插入第二个数据库。
但是,当作业下次运行时,它应该只插入来自第一个DB的新记录,如果是第一个DB上的任何更新,它应该更新,如果从第一个DB中删除它,则删除该记录。< / p>
Talend中是否存在任何组件来实现此目的?请帮忙。
答案 0 :(得分:0)
您需要激活生产数据库中的CDC功能,或者在数据库中查找包含插入日期和修改日期的字段,这样您就可以每次保存并加载已插入的行在存储日期之后。
答案 1 :(得分:0)
完全比较CDC - (更改数据捕获)基本上就是您所描述的内容。
根据数据量和同步频率,完全比较CDC可能不实用。
如果您不使用数据库端CDC或商业Talend CDC组件,您可以在Talend open studio中实现自己的比较算法。
确定唯一字段(或多个字段)作为源表和目标表中的公用键的用途。
对于每个作业运行,选择源表中的所有数据和目标表中的所有数据。
对于不会出现在Target表中的唯一源键;做一个插入。
对于确实出现在目标中的唯一源键,进一步比较数据以确定对目标的更新是否合适。
对于出现在目标表中但不在源中的唯一键,删除目标行。如果目标系统中有其他表引用要删除的数据,请评估正确的操作过程。这在很大程度上取决于目标系统的使用方式及其目的。
注意 - 有时人们选择将源数据加载到目标系统中的临时表中,因此可以在SQL中执行比较。