【问题标题】:insert csv file into mssql if exists then update using apache nifi如果存在,则将 csv 文件插入 mssql,然后使用 apache nifi 进行更新
【发布时间】:2020-11-20 19:52:18
【问题描述】:

嗨,我有一个 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 中实现这个,那么你会想要一个“upsert”或MERGE
  • 嗨需要更新@Larnu

标签: sql-server etl apache-nifi


【解决方案1】:

您可以使用 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

【讨论】:

  • NiFi 中尚不存在 MS SQL 的 UPSERT
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 2020-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多