【问题标题】:tmap talend NullPointerExceptiontmap talend NullPointerException
【发布时间】:2018-01-25 15:46:16
【问题描述】:

我正在尝试将两个 csv 读入我的 SQL Server。得到NullPointerException,即使我每次都允许空值并检查空值。调试时,空检查表达式似乎每次都评估为 FALSE 条件,即使字符串为空也是如此。

这是我的空检查示例:

( row2.Acq_date.equals(null) || row2.Acq_date.equals("") || 
row2.Acq_date == null ) ? null : (int) 
TalendDate.diffDate(TalendDate.getCurrentDate(),row2.Acq_date,"MM")

【问题讨论】:

    标签: nullpointerexception talend


    【解决方案1】:

    你不应该像 row2.Acq_date.equals(null) 这样进行空值检查。
    这是正确的方法:row2.Acq_date == null(您实际上已将其包含在测试中,仅在测试row2.Acq_date.equals(null) 之后才这样做为时已晚,因为那是抛出NullPointerException 的部分)。

    这是正确的方法:

    ( row2.Acq_date == null ? null : (int) 
    TalendDate.diffDate(TalendDate.getCurrentDate(),row2.Acq_date,"MM")
    

    根据您的评论,row2.Acq_date 是日期类型,您可以使用适当的日期格式直接从文件中读取。如果文件中的列为空(或包含空格),Talend 将返回一个空日期,由上述测试处理。

    【讨论】:

    • 我将 row2.Acq_date 作为日期输入...您认为按照您在此处的建议输入字符串然后解析到日期是否更可取?
    • 抱歉,我假设 row2.Acq_date 是字符串类型,因为您正在针对空字符串进行测试;无需将其读取为字符串,我已经更新了答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    相关资源
    最近更新 更多