tmap talend NullPointerException 异常
tmap talend NullPointerException
我正在尝试将两个 csv 读入我的 SQL 服务器。获得 NullPointerException
即使我每次都允许 nullable 并检查 null。调试时,空检查表达式似乎每次都计算为 FALSE 条件,即使字符串为空。
这是我的空检查示例:
( row2.Acq_date.equals(null) || row2.Acq_date.equals("") ||
row2.Acq_date == null ) ? null : (int)
TalendDate.diffDate(TalendDate.getCurrentDate(),row2.Acq_date,"MM")
你不应该像这样进行空值检查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 returns 空日期,由上述测试处理。
我正在尝试将两个 csv 读入我的 SQL 服务器。获得 NullPointerException
即使我每次都允许 nullable 并检查 null。调试时,空检查表达式似乎每次都计算为 FALSE 条件,即使字符串为空。
这是我的空检查示例:
( row2.Acq_date.equals(null) || row2.Acq_date.equals("") ||
row2.Acq_date == null ) ? null : (int)
TalendDate.diffDate(TalendDate.getCurrentDate(),row2.Acq_date,"MM")
你不应该像这样进行空值检查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 returns 空日期,由上述测试处理。