使用Nifi搭建mysql数据库的DWH

问题描述 投票:0回答:0

我目前正在使用 Nifi 构建 Datawarehouse。 我的资源是 100 个小型 mysql 数据库。我的目的地是一个巨大的 mysql 数据库。 任何插入、更新和删除都应该反映在 DWH 中。

我正在使用 changecapturemysql 处理器来识别插入、更新和删除,然后在为每个数据库附加时间戳和 uniqueID 等几列后将它们发送到 putdatabaserecord 处理器。

My sources 有一个 PK(主键)列。我的目的地与 PK 具有相同的列 + 另一列(每个数据库的唯一 ID)。所有插件工作正常。当涉及到更新和删除时,非主键的更新被捕获并且,但是如果我更新源中的主键列,它在目标中是不变的。与删除相同。 PK 上带有 where 子句的删除不会删除目标中的记录。当我阅读文档时,这是预期的行为 -

"重要提示:如果语句类型是 UPDATE,则传入的记录不得更改主键(或用户指定的更新键)的值。如果遇到此类记录,则向数据库发出的 UPDATE 语句可能什么都不做(如果没有找到具有新主键值的现有记录),或者可能会无意中破坏现有数据(通过更改存在主键新值的记录)。”

  • 根据 nifi 官方文档。

现在我的问题是如何使用 changepaturemysql 处理器将端到端复制到目标数据库表中?有没有其他方法可以使更新和删除发生,即使它们基于主键......? putsql 这里有帮助吗?

请指导我。

apache-nifi primary-key data-warehouse
© www.soinside.com 2019 - 2024. All rights reserved.