我正在读一个文本文件,它的时间戳中有一个这样的字段 "yyyy-MM-dd HH:mm:ss" 我想能够把它转换成一个字段在 Impala 作为bigint和应该喜欢 yyyMMddHHmmss 在 java 。我将talend用于etl,但是我得到了一个错误“schema'sdbtype not correct for this component”,因此我希望在输出组件中有正确的转换
"yyyy-MM-dd HH:mm:ss"
yyyMMddHHmmss
unguejic1#
一个明显的选择是将日期作为字符串读取,将其格式化为所需的输出,然后将其转换为long,然后再将其发送给impala。要做到这一点,首先使用talend的parsedate函数,如下所示:
TalendDate.parseDate("yyyy-MM-dd HH:mm:ss",row1.date)
这会将日期字符串解析为日期类型对象。从这里,您可以使用以下命令将其转换为所需的字符串格式:
TalendDate.formatDate("yyyMMddHHmmss",row2.date)
或者,可以通过以下方法一次性完成:
TalendDate.formatDate("yyyMMddHHmmss",TalendDate.parseDate("yyyy-MM-dd HH:mm:ss",row1.date))
在此之后,您应该有一个日期字符串在您想要的格式。然后可以使用tconverttype组件或以下java代码将其强制转换为long:
Long.valueOf(row3.date)
或者,再一次,我们可以在一行中完成整个过程:
Long.valueOf(TalendDate.formatDate("yyyMMddHHmmss",TalendDate.parseDate("yyyy-MM-dd HH:mm:ss",row1.date)))
从这里,您应该能够将它作为java long发送到impala bigint字段。
1条答案
按热度按时间unguejic1#
一个明显的选择是将日期作为字符串读取,将其格式化为所需的输出,然后将其转换为long,然后再将其发送给impala。
要做到这一点,首先使用talend的parsedate函数,如下所示:
这会将日期字符串解析为日期类型对象。从这里,您可以使用以下命令将其转换为所需的字符串格式:
或者,可以通过以下方法一次性完成:
在此之后,您应该有一个日期字符串在您想要的格式。然后可以使用tconverttype组件或以下java代码将其强制转换为long:
或者,再一次,我们可以在一行中完成整个过程:
从这里,您应该能够将它作为java long发送到impala bigint字段。