【问题标题】:PutDataBaseRecord does not insert any record when one of them already exists in the database当其中一条记录已存在于数据库中时,PutDataBaseRecord 不会插入任何记录
【发布时间】:2019-12-04 02:06:11
【问题描述】:

我在 NIFI 中使用 PutDataBaseRecord 将 CSV 文件的数据插入到数据库表中。第一次执行一切顺利,因为表中没有数据。然后我修改文件,使其包含新记录和现有记录。由于现有记录(主键约束),PutDataBaseRecord 失败,但它没有插入新记录。

有没有办法配置处理器来指示它插入新记录并忽略失败的记录?

我附上了我的处理器配置的图片。

提前致谢!

Flujo NIFI

PutDataBaseRecord

【问题讨论】:

    标签: apache-nifi


    【解决方案1】:

    这是可能的。然而,这不是一个简单的实现。

    我建议您尝试以下流程 - ListFile -> FetchFile -> SplitRecord -> PutDatabaseRecord

    在 SplitRecord 处理器中,将“Records per Split”属性设置为“1”。

    SplitRecord 处理器将输入流文件拆分为多个小流文件(在我们的示例中,由于设置“每个拆分的记录=1”,每行 1 个文件)。然后这个单独的流文件将被路由到“拆分”关系,即到我们流中的 PutDatabaseRecord 处理器。

    PutDatabaseRecord 将新记录插入表中,但对现有记录失败。

    使用 GetFile 处理器测试了流程,它可以工作。希望这能解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      • 2018-05-07
      • 2012-05-08
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多