Ошибка с меткой времени replaceText добавить квоту Nifi - PullRequest
0 голосов
/ 20 мая 2018

В моем потоковом файле есть столбец метки времени, написанный таким образом. 2008: 05: 17 17:23:01.Я хочу добавить квоту к этому значению, чтобы я мог вставить ее в таблицу postgresql.Я использовал замену текста следующим образом:

значение поиска:

 ((\d{4})([\-\/.])([0-3]?\d)\2([0-3]?\d)|([0-3]?\d)([\-\/.])([0-3]?\d)\6(\d{4}))(?:\s+([012]?\d)([:hap])([0-5]\d))([:hap])([0-5]\d)

значение замены:

 ' ((\d{4})([\-\/.])([0-3]?\d)\2([0-3]?\d)|([0-3]?\d)([\-\/.])([0-3]?\d)\6(\d{4}))(?:\s+([012]?\d)([:hap])([0-5]\d))([:hap])([0-5]\d) '

, но это не сработало.Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Похоже, вы хотели бы добавить и добавить одинарные кавычки для всей группы.Вам не понадобится регулярное выражение в значении замены, скорее вы можете обратиться к группе (я думаю, что это 0-я группа?), Попробуйте это для значения замены

'$0'

Чтобы вставить to_timestamp, выдолжен иметь возможность использовать следующее в качестве значения замены:

to_timestamp('$0', 'YYYY:MM:DD HH24:MI:SS')

Сказав это, какой процессор вы используете для вставки в PostgreSQL?Я думаю, что они будут обрабатывать кавычки литерала метки времени автоматически (если они знают, что столбец назначения является меткой времени).

0 голосов
/ 20 мая 2018

Я бы предпочел вместо этого использовать to_tmestamp:

s=# select to_timestamp('2008:05:17 17:23:0','YYYY:MM:DD HH24:MI:SS');
      to_timestamp
------------------------
 2008-05-17 17:23:00+00
(1 row)
...