首页 > 解决方案 > 如何将 Avro 转换为 SQL 批量更新?

问题描述

我正在尝试将输入 Avro(Avro 记录数组)转换为一批 upsert 语句。有没有可以做到这一点的处理器?

[Read External DB (RDBMS)]->[Avro to Upsert batch]->[Local DB]

我发现可以在 PutSQL 之前使用 sql.N.args.type & name 格式化记录。使用这种方法,是否有处理器或技巧可以使这个干净?

[读取外部数据库(RDBMS)]->[拆分为1]->[将Avro转换为sql.N.args.type和名称格式]->[SetAttribute: sql.statement=SQL]->[Local DB]

在第二种情况下,我被困在 [将 Avro 转换为 sql.N.args.type 和名称格式] 并且我试图抵制使用 ExecuteScript 的冲动......最简单的前进方式是什么?

标签: apache-nifi

解决方案


如果您需要生成 SQL(例如进行 upsert 与插入),您可以使用 ConvertJSONToSQL(假设您的内容是 JSON),它会为您完成所有 sql.args.N 的工作。如果您使用 ExecuteSQLRecord 或 QueryDatabaseTableRecord,您可以将源数据库信息作为 JSON(通过使用 JsonRecordSetWriter)与仅输出 Avro 的非基于记录的版本相比。否则,您需要在 ConvertJSONToSQL 之前使用 ConvertAvroToJSON。


推荐阅读