我有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")。
当我更改像 TalendDate.parseDate(" MM / dd / yyyy",row1.ClosingDate)的解析格式时,我收到了SimpleDateFormat错误。 简单日期格式错误 如何解决这个问题?
答案 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中使用日期表示日期。它使一切变得更容易。