PutSql - 日期格式错误

时间:2017-02-20 18:42:18

标签: apache-nifi

我试图从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"

1 个答案:

答案 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}