问题:我有两个数据库,一个是客户端的数据库(实时数据库),另一个是我的。我使用的是MySQL数据库。我不应该直接访问客户端的数据库,所以我创建了自己的数据库。通过使用'Talend'数据仓库工具,我为每个表创建了作业,通过执行所有作业,我可以从客户端的数据库(实时数据库)获取所有更新的数据到我的数据库。我需要手动执行这些作业以将更新的数据导入我的数据库,但我的问题是:是否有任何进程会自动提醒我,当客户端在数据库中插入或更新数据时,我可以手动执行这些作业以获得更新数据进入我的数据库?或者如果客户端更新了他们的任何数据库表,那么自动关联的作业将执行/运行?请帮帮我。
答案 0 :(得分:1)
您需要设置一个数据库触发器,以某种方式通知Talend作业并运行它。为此,您通常使用存储过程或用户定义的函数将作业调用为Web服务。 This link显示了一种典型的方式,例如,可以在更新触发器上调用Web服务。
如果您的源数据表很大,而不是从表中提取所有数据,然后我想丢弃您的表并重新创建您可以使用tMysqlCDC组件仅影响更改。该组件的内置教程看起来几乎涵盖了实践中的一个有用示例。如果您看到源数据库中的常规更改,这可能会使您的工作更加高效。
如果您完全无法访问客户端的数据库,那么您也可以使用某个调度程序运行该作业。 Talend的企业版本附带了Talend管理控制台,允许您为作业设置CRON触发器,并且可以轻松设置为每分钟或任何其他间隔(而不是秒)运行。或者,您可以使用操作系统调度系统以所需的时间间隔运行作业。
答案 1 :(得分:0)
如果您无法修改您的客户数据库(即添加触发器),并且没有其他方法可以识别更改的记录(即某种审计表),那么您就是我们的运气。