2017-02-20 18 views
1

Я пытаюсь прочитать данные из «Teradata» и заполнить их в базе данных «Oracle». Пожалуйста, найдите ниже моего потока,PutSql - ошибка формата даты

'ExecuteSQL' -> 'SplitAvro' -> 'ConvertAvroToJSON' -> 'ConvertJSONToSQL' -> 'PutSQL' сообщение

Ошибка: Не удается обновить базу данных для StandardFlowFileRecord из-за орг .apache.nifi.processor.exception.ProcessException: значение sql.args.7.value равно «2999-12», которое не может быть преобразовано в метку времени; routing to failure: org.apache.nifi.processor.exception.ProcessException: значение sql.args.7.value равно «2999-12», которое не может быть преобразовано в метку времени

Кажется, мне нужно отформатируйте поле «Дата», прежде чем я запишу его в Oracle. Не могли бы вы объяснить мне, какой процессор должен содержать эту логику форматирования даты?

Анализ Furthur показывает, что конкретное значение было усечено процессором ConvertJSONToSQL. входного значения для процессора «ConvertJSONToSQL» - «2002-02-04» Обработанного значение - «2002-02»

ответ

0

Похоже, что вы можете быть запущены в 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}.

+0

Благодарим вас за ответ. Я обновил свой поток, как показано ниже, ExecuteSQL -> SplitAvro -> ConvertAvroToJSON -> EvaluateJsonPath -> ConvertJSONToSQL -> UpdateAttribute -> PutSQL Теперь я могу сохранить первоначальное значение даты и отправить его в процессор PutSQL. Проблема заключается в том, что обработчик PutSQL не рассматривает ни один из ofat как действительный. Я пробовал следующие различные форматы: '2015-12-31' '2015-12-31 12:12:00' '2015-12-31 12: 12: 00: 000' Все приводили к тому же 'не может быть преобразована в метку времени. Ваш совет будет полезен. Есть ли какая-нибудь работа для NIFI-3430? – Pons