在Talend

时间:2017-12-29 04:58:16

标签: mongodb talend date-formatting isodate string-to-datetime

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

tFileInputExcel --> tMap --> tMongoDBOutput

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

这是我的工作:
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 如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

如果mongodb列模式是日期,你可以做到:

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

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

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

答案 1 :(得分:0)

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

我在博客上写过这篇文章,特别是Talend:https://www.tobiasmaasland.de/2017/07/20/using-date-in-talend-etl-jobs/

但是让我解释一下。

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

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

你可能很幸运
TalendDate.parseDate("MM/dd/yyyy", (row1.ClosingDate == null), "01/01/1970", row1.ClosingDate)

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

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

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