我正在尝试从'Teradata‘读取数据,并将其填充到'Oracle’数据库中。请在我的流程下面找到,
'ExecuteSQL‘-> 'SplitAvro’-> 'ConvertAvroToJSON‘-> 'ConvertJSONToSQL’-> 'PutSQL‘
错误消息:由于org.apache.nifi.processor.exception.ProcessException:,无法为sql.args.7.value更新数据库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”
发布于 2017-02-22 00:44:59
看起来你可能遇到了NIFI-2625。在即将发布的NiFi (由于NIFI-3430)中,您可以通过在属性中指定日期格式来解决此问题,但是这可能不会修复您看到的截断值。
如果您知道包含时间戳值的字段的名称(或JSON数组的索引,例如上面的"7“,它实际上是JSON数组中的索引6),则可以在ConvertJSONToSQL之前使用EvaluateJsonPath,以确保保留正确的原始值(假设您调用属性sql.args.7.original)。然后在ConvertJSONToSQL之后,您可以使用UpdateAttribute将不正确的/截断的值替换为正确的原始值,方法可能是将属性sql.args.7.value设置为${sql.args.7.original}。
https://stackoverflow.com/questions/42352064
复制相似问题