在Talend中将String转换为ISO日期格式

问题描述 投票:0回答:2

我有Excel数据,并尝试使用Talend Big Data for Open Studio将数据插入MongoDB。这是我的工作,

tFileInputExcel --> tMap --> tMongoDBOutput

在Excel工作表中,我有一个7/13/2017格式的日期值列(MM / dd / yyyy)作为字符串类型,我试图将此列值插入ISO格式ISODate(“2017-07-13T00:00 :00.000Z“)在MongoDB中。

这是我的工作: tFileInputExcel:enter image description here

tMap:enter image description here

tMongoDBOutput:enter image description here

执行此作业时,我收到以下错误。错误:enter image description here

当我更改像这个TalendDate.parseDate(“MM / dd / yyyy”,row1.ClosingDate)的解析格式时,我收到SimpleDateFormat错误。简单日期格式错误enter image description here如何解决此问题?

mongodb talend date-formatting isodate string-to-datetime
2个回答
0
投票

你可以简单地做你的mongodb列模式是日期:

TalendDate.parseDate("MM/dd/yyyy",row3.newColumn) 

这将自动转换mongoDB列所具有的日期模型中的日期。

您可以在Talend中更改模式中的日期模型,如"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"


0
投票

在不了解底层数据类型的情况下读取数据时,这是一个非常常见的错误。

我特意为Talend写了一篇关于此的博客:https://www.tobiasmaasland.de/2017/07/20/using-date-in-talend-etl-jobs/

但让我解释一下。

有时Excel会尝试转换单元格中的数据,即使可能认为单元格类型设置为String。 Insted,设置为Date。因此,不需要转换,类型需要在输入组件中为Date。

如果它是一个String并且发生错误,则String的结构要么在任何地方都不相同,要么某些单元格为空(null)。所以你可能很幸运

TalendDate.parseDate("MM/dd/yyyy", (row1.ClosingDate == null), "01/01/1970", row1.ClosingDate)

我只是假设您可能想要使用占位符日期而不是null。

这在很大程度上取决于单元格中的实际数据类型,如果每个单元格具有相同的数据类型,并且所有数据的格式都正确。

总结我的博客文章中的一个事实:不要使用字符串作为日期。在Excel中使用日期表示日期。它使一切变得更容易。

© www.soinside.com 2019 - 2024. All rights reserved.