我有一个带有日期字段的Excel,但是excel中的第一行是空白的,而其他几行的日期格式为 MM / dd / yyyy HH:mm:ss 。
要加载到Postgresql表中的数据,其字段为数据类型timestamp yyyy-mm-dd HH:mm:ss 。
excel无法修改,因为它是从云端下载的,数据会直接加载到表中
我尝试使用tConvert类型,但它不能接受null或" "时间戳中的值。
我在talend的运行时遇到Null tMap错误。即使我尝试从字符串转换为日期格式以便在tmap中传递null,它也会更改日期格式并显示错误。如何处理?
talend结构是:
tFileInputExcel - > TMAP(日期字段:MM / dd / yyyy HH:mm:ss) - > tConvertType(日期字段:yyyy-mm-dd HH:mm:ss) - > TMAP(yyyy-mm-dd HH:mm:ss) - > Postgresql表
答案 0 :(得分:0)
您可以在tMAP组件
中的变量中捕获日期格式或空值处理即
var :TalendDate.formatDate("yyyy-mm-dd HH:mm:ss",row1.columnname)
所以数据流将是
tFileInputExcel ---> tMAP ---> Postgresql表
答案 1 :(得分:0)
首先,我不太明白为什么要使用tConvertType组件。在定义了正确的模式之后,Talend正在将您的数据更改为Java Date对象,从那时起格式并不重要,当您想将其放入Postgres表时,您不必转换它。至少它不应该导致NullPointerException。
请考虑以下步骤:
示例输入文件
我准备了一些带有日期值/空格/空字符串的文件,我正在描述的解决方案也是空的。
配置tFileInputExcel组件
您必须通过选中Nullable复选框来允许取值。您还应该检查修剪选项。
检查输出
将输入组件连接到tLogRow后,null / empty / space值被正确处理。
我希望这会有所帮助。