首页 > 解决方案 > 如果存在,则将 csv 文件插入 mssql,然后使用 apache nifi 更新

问题描述

嗨,我有一个 csv 文件,它将每 180 分钟生成一次,应该插入到 ms sql 中,这里是示例 csv 文件:-

id,name,address,pukcod,vihemida
 5,rahul,vedu,0949,thr
 6,ryhul,vydu,0669,thr
 7,verm,redr,0464,thr

在任何情况下,如果 id 已经存在,则上述 csv 文件必须插入到 mssql 数据库中,然后我需要使用 apache nifi 进行更新,我正在使用 putdatabaserecord 我只能插入或更新,如果我选择更新,则新记录不会插入我使用插入然后现有记录没有得到更新有什么解决方案

例如:- 我现有的 mssql 数据库有以下记录

id,name,address,pukcod,vihemida
 5,rahul,rem,0949,thr

现在我必须将 csv 文件记录插入到我的 mssql 数据库中,如果 id 存在,那么它应该在 nifi 中更新

id,name,address,pukcod,vihemida
 5,rahul,vedu,0949,thr            <------ update record
 6,ryhul,vydu,0669,thr          | insert record
 7,verm,redr,0464,thr           | insert record

任何人都可以帮助我在 nifi 中解决这个问题

标签: sql-serveretlapache-nifi

解决方案


您可以使用 PutDatabaseRecord 并使用 UPSERT 语句类型来执行此操作。

例如 GetFile -> PutDatabaseRecord,并使用 CSVReader 作为 Record Reader。

此处有关 PutDatabaseRecord 的文档: https ://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.12.1/org.apache.nifi.processors.standard.PutDatabaseRecord /

此处有关 CSVReader 的文档: https ://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-record-serialization-services-nar/1.12.1/org.apache.nifi.csv .CSVReader/index.html


推荐阅读