sql-server - 如果存在,则将 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 中解决这个问题
解决方案
您可以使用 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
推荐阅读
- django - 如何访问 forms.py 定义中的运行时 request.session 值?
- r - 将 JSON 导出到文本文件
- javascript - 在 ngOnInit() 内部使用 ngOnInit() 外部的函数
- mysql - 如何使用 SELECT LAST_INSERT_ID(); 在mysql例程中插入语句后?
- python - 排序、排名、groupby 和 sum 组合 -> Python pandas
- c# - Sqlite 使用过程/触发器附加数据库,我将能够从 c# 运行它
- maven - 如何在每个环境中配置 Maven Surefire 中的环境变量?
- uml - 我怎么能说数组中的所有元素都必须在 OCL 中具有某些属性?
- mongodb - 使用 MongoRepository 更新实体时修改的计数
- r - 内联显示文件输入和操作按钮