【问题标题】:Nifi PutDatabaseRecord to update a table with where conditionNifi PutDatabaseRecord 使用 where 条件更新表
【发布时间】:2021-10-16 04:20:24
【问题描述】:

如何使用 PutDatabaseRecord 只更新一个名为 student 的表的三列,该表有几列?我正在尝试使用 NiFi 使用 where 子句实现以下查询。

update student set class=v1,name=v2,section=v3 where 
id = v4

我正在使用 ExecuteSQL 处理器获取值 v1、v2、v3、v4。同一天可以有 100 名学生注册。所以,v1,v2,v3,v4 将是 json 数组

 SELECT class,name,section,id
    FROM registration where registerd_on='20210530';

我的 PutDatabaseRecord 配置。我想了解如何在此处指定 where 条件?

【问题讨论】:

  • 更新键 - 以逗号分隔的列名列表,用于唯一标识行。所以你必须把id放进去。
  • @daggett 我们可以在 NiFi 中检查 PutDatabaseRecord 生成了什么更新查询。我在日志中没有看到任何查询。
  • @daggett 谢谢,正如您将 id 放入更新密钥中所建议的那样。如果您可以将其作为答案,我将接受。此外,一般而言,了解 PutDatabaseRecord 在日志或公告级别生成了什么更新查询会很有帮助

标签: apache-nifi


【解决方案1】:

根据文档

https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.14.0/org.apache.nifi.processors.standard.PutDatabaseRecord/

Update keys - 以逗号分隔的列名列表,用于唯一标识行。

因此,如果您只有一列 id 作为表行标识符,则必须设置 Update keys = id

关于跟踪 sql 查询。尝试将以下行添加到conf\logback.xml

<logger name="org.apache.nifi.processors.standard.PutDatabaseRecord" level="DEBUG"/>

有时 sql 应该出现在日志中,但我真的无法理解代码中的逻辑......

https://github.com/apache/nifi/blob/main/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 2013-07-09
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    相关资源
    最近更新 更多