是否可以使用 convertRecord 或其他处理器处理 null(列在 CSV 中不存在)?
我每天收到几个 CSv 文件。但问题是每个 CSv 中的字段都不相同,有没有一种方法可以将 CSV 中不存在的所有字段的 0 值发送到数据库中。如果是,请让我不如何?谢谢。
例如:CSV1 有以下字段: 年龄、姓名、地址、值 1、值 2、值 3
(注意:Value3 并非每次都出现在所有 CSV 中,有时它存在,有时该列不存在)
CSV2 将具有以下内容: 年龄、姓名、地址、值 1、值 2
而数据库中的表骨架如下: 年龄、姓名、地址、值 1、值 2、值 3
我不想让空值后跟数据库中的某个值。在以自动方式插入数据库之前,我在 NiFi 中的流程是否可以处理“null”并用 0 替换它(每次如果 CSV 中不存在架构中给出的特定字段,流程应该将 0 分配给该字段并摄取数据库中的所有其他内容)
请帮我实现这个。谢谢!
请您参考如下方法:
对于这种情况,您必须在其中定义具有默认值的 avro 模式。
示例 avro 架构:
{
"type": "record",
"name": "SQLSchema",
"fields" : [
{"name": "Age", "type": ["null","string"]},
{"name": "Name", "type": ["null","string"]},
{"name": "Address", "type": ["null","int"]},
{"name": "Value1", "type": ["null","int"]},
{"name": "Value2", "type": ["null","int"]},
{"name": "value3", "type": ["null","int"],"default": 0}
]
}
对于 value3
字段,我们将类型定义为 null (or) int
并将默认值定义为 0。
如果 value3 没有数据 字段,则会将值替换为 0。