我正在尝试从“Teradata”读取数据并将其填充到“Oracle”数据库。请在下面找到我的流程,
'ExecuteSQL' -> 'SplitAvro' -> 'ConvertAvroToJSON' -> 'ConvertJSONToSQL' -> 'PutSQL'
错误信息:
无法更新 StandardFlowFileRecord 的数据库
由于org.apache.nifi.processor.exception.ProcessException:sql.args.7.value的值为'2999-12',无法转换为时间戳;路由到失败:org.apache.nifi.processor.exception.ProcessException:sql.args.7.value的值为'2999-12',无法转换为时间戳
看来我需要先格式化日期字段,然后再将其填充到 Oracle 中。您能否解释一下哪个处理器应包含此日期格式化逻辑?
进一步的分析表明,特定值被“ConvertJSONToSQL”处理器截断。
“ConvertJSONToSQL”处理器的输入值 - “2002-02-04”
处理值 - “2002-02”
看来您可能会遇到NIFI-2625。在即将发布的 NiFi 版本中(由于NIFI-3430),您可以通过在属性中指定日期格式来解决此问题,但这可能无法修复您看到的截断值。
如果您知道包含时间戳值的字段名称(或 JSON 数组的索引,例如上面的“7”,实际上是 JSON 数组中的索引 6),则可以使用评估JsonPath在 ConvertJSONToSQL 之前,确保保留正确的原始值(假设您调用属性sql.args.7.original
)。然后在 ConvertJSONToSQL 之后你可以使用更新属性将不正确/截断的值替换为正确的原始值,也许可以通过设置属性sql.args.7.value
to ${sql.args.7.original}
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)