【发布时间】:2019-12-04 02:06:11
【问题描述】:
我在 NIFI 中使用 PutDataBaseRecord 将 CSV 文件的数据插入到数据库表中。第一次执行一切顺利,因为表中没有数据。然后我修改文件,使其包含新记录和现有记录。由于现有记录(主键约束),PutDataBaseRecord 失败,但它没有插入新记录。
有没有办法配置处理器来指示它插入新记录并忽略失败的记录?
我附上了我的处理器配置的图片。
提前致谢!
【问题讨论】:
标签: apache-nifi
我在 NIFI 中使用 PutDataBaseRecord 将 CSV 文件的数据插入到数据库表中。第一次执行一切顺利,因为表中没有数据。然后我修改文件,使其包含新记录和现有记录。由于现有记录(主键约束),PutDataBaseRecord 失败,但它没有插入新记录。
有没有办法配置处理器来指示它插入新记录并忽略失败的记录?
我附上了我的处理器配置的图片。
提前致谢!
【问题讨论】:
标签: apache-nifi
这是可能的。然而,这不是一个简单的实现。
我建议您尝试以下流程 - ListFile -> FetchFile -> SplitRecord -> PutDatabaseRecord。
在 SplitRecord 处理器中,将“Records per Split”属性设置为“1”。
SplitRecord 处理器将输入流文件拆分为多个小流文件(在我们的示例中,由于设置“每个拆分的记录=1”,每行 1 个文件)。然后这个单独的流文件将被路由到“拆分”关系,即到我们流中的 PutDatabaseRecord 处理器。
PutDatabaseRecord 将新记录插入表中,但对现有记录失败。
【讨论】: