mysql - 在 NiFi 中使用 ConvertRecord 处理 Null

标签 mysql apache etl apache-nifi

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

关于mysql - 在 NiFi 中使用 ConvertRecord 处理 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53163452/

相关文章:

php - 获取数据库中排名前十的出版商列表

mysql - MySQL 中出现未知错误

php - 匹配 wp_usermeta 中的多个值以从 wp_users 表获取电子邮件

java - Apache HTTPD 关闭连接或不将请求重定向到 servlet 容器

xml - 在浏览器中读取 wsdl 文件

sql - ETL 管道的数据整合

mysql - 在新表中汇总数据

python - 无法在 Django 中运行 os.system 命令?

python-3.x - 在 Prefect 中,可以在流程运行期间缓存任务值吗?

c# - SSIS脚本组件输入