我试图从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',无法转换为时间戳
似乎我需要格式化Date字段,然后再将其填入Oracle。能否请您解释一下哪个处理器应该包含这个日期格式化逻辑?
Furthur分析显示,特定值被“转换后的JSONToSQL”截断。处理器。 输入值为< ConvertJSONToSQL'处理器 - " 2002-02-04" 处理价值 - " 2002-02"
答案 0 :(得分:0)
看起来您可能遇到了NIFI-2625。在即将发布的NiFi版本中(由于NIFI-3430),您可以通过在属性中指定日期格式来解决此问题,但这可能无法修复您看到的截断值。
如果您知道包含时间戳值的字段的名称(或JSON数组中的索引,例如" 7"其上面实际上是JSON数组中的索引6),您可以使用{在ConvertJSONToSQL之前{3}},以确保您保留正确的原始值(假设您调用属性sql.args.7.original
)。然后在ConvertJSONToSQL之后,您可以使用EvaluateJsonPath将错误/截断的值替换为正确的原始值,可以将属性sql.args.7.value
设置为${sql.args.7.original}
。