我有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中。
当我更改像这个TalendDate.parseDate(“MM / dd / yyyy”,row1.ClosingDate)的解析格式时,我收到SimpleDateFormat错误。简单日期格式错误如何解决此问题?
你可以简单地做你的mongodb列模式是日期:
TalendDate.parseDate("MM/dd/yyyy",row3.newColumn)
这将自动转换mongoDB列所具有的日期模型中的日期。
您可以在Talend中更改模式中的日期模型,如"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
。
在不了解底层数据类型的情况下读取数据时,这是一个非常常见的错误。
我特意为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中使用日期表示日期。它使一切变得更容易。