【问题标题】:Error with replaceText timestamp add a quota NifireplaceText 时间戳出错添加配额 Nifi
【发布时间】:2018-10-30 05:55:04
【问题描述】:

我的流文件中有一个时间戳列,以这种方式编写 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) '

但它没有用。请帮忙。

【问题讨论】:

  • 您能否确认您的流文件内容时间戳和分隔符始终为:(冒号)2008:05:17 17:23:01 并且您想在时间戳中添加引号,例如'2008:05:17 17:23:01' 这是正确的假设吗..?因为我看到您的正则表达式与输入内容不匹配..

标签: sql postgresql replace timestamp apache-nifi


【解决方案1】:

我宁愿只使用 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)

【讨论】:

  • 我像这样在 ReplaceText 处理器中使用它?选择 to_timestamp?我想将所有时间戳替换为“时间戳”,我添加了“”,这样我就可以在表中插入列。我有一个大文件,只是我输入了一个值来解释问题
【解决方案2】:

您似乎想在整个组中添加单引号。替换值中不需要正则表达式,而是可以引用组(我认为它是第 0 组?),试试这个替换值

'$0'

要插入 to_timestamp,您应该能够使用以下内容作为替换值:

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

话虽如此,您使用什么处理器来插入 PostgreSQL?我认为他们会自动处理时间戳文字的引用(如果他们知道目标列是时间戳)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 2014-12-12
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多