在talend中处理空值和日期格式

时间:2016-03-03 18:29:57

标签: excel postgresql datetime nullpointerexception talend

我有一个带有日期字段的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表

这是Excel屏幕截图:
enter image description here

2 个答案:

答案 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。

请考虑以下步骤:

示例输入文件

input file with empty strings/spaces/nulls

我准备了一些带有日期值/空格/空字符串的文件,我正在描述的解决方案也是空的。

配置tFileInputExcel组件

您必须通过选中Nullable复选框来允许取值。您还应该检查修剪选项。

tFileInputExcel sample schema

检查输出

将输入组件连接到tLogRow后,null / empty / space值被正确处理。

tLogRow with null values

我希望这会有所帮助。