PutSql - ошибка формата даты

Я пытаюсь прочитать данные из "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"

1 ответ

Решение

Похоже, вы можете столкнуться с NIFI-2625. В следующем выпуске NiFi (из-за NIFI-3430) вы можете обойти это, указав формат даты в атрибуте, однако это может не исправить усеченных значений, которые вы видите.

Если вы знаете имя поля (или индекс в массиве JSON, например, "7" выше, который на самом деле является индексом 6 в массиве JSON), который содержит значение метки времени, вы можете использовать EvaluateJsonPath перед ConvertJSONToSQL, чтобы обеспечить сохранение правильное исходное значение (скажем, вы называете атрибут sql.args.7.original). Затем после ConvertJSONToSQL вы можете использовать UpdateAttribute, чтобы заменить неверное / усеченное значение на правильное исходное, возможно, установив атрибут sql.args.7.value в ${sql.args.7.original},

Другие вопросы по тегам