如何在Talend

时间:2018-03-17 19:19:00

标签: java etl talend java-date

我有.csv文件,其中包含名为created_ts的列,并包含日期值。但是,日期有两种格式:

  • 2016-12-07 14:12:58.727746 + 01(yyyy-MM-dd hh:mm:ss.SSSSSSX
  • 2008-10-25 18:22:32 + 02(yyyy-MM-dd hh:mm:ssX

所以我的问题是如何从.csv文件中读取数据而不会收到错误" Unparseable date:2008-10-25 18:22:32 + 02"

这里的图片展示了我如何设置日期格式,但对于created_ts列,我有两种不同格式的日期,所以如果我放第一个,我得到" Unparseable date: XXXXXX"如果我放第二种格式错误,同样的错误......

enter image description here

1 个答案:

答案 0 :(得分:1)

由于您的日期可能是不同的格式,您需要在tFileInputDelimited中将列作为字符串类型读取,然后在tMap内,检查日期类型(检查日期的简单方法)通过测试其长度)并使用正确的日期格式解析它:

tFileInputDelimited -- tMap -- output

在tMap表达式中,你可以这样:

row.created_ts.length() == 22 ? TalendDate.parseDate("yyyy-MM-dd hh:mm:ssX", row.created_ts) : TalendDate.parseDate("yyyy-MM-dd hh:mm:ss.SSSSSSX", row.created_ts)