如何在 Talend 中解析具有两种日期格式的列
How to parse column with two types of date format in Talend
我有 .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" 错误,同样如果我输入第二种格式会出错....
由于您的日期可以采用不同的格式,因此您需要在 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)
我有 .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" 错误,同样如果我输入第二种格式会出错....
由于您的日期可以采用不同的格式,因此您需要在 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)