Java Talend-在类型为“NUMBER”的数据库列中插入“NULL”

Java Talend-在类型为“NUMBER”的数据库列中插入“NULL”,java,sql,database,talend,Java,Sql,Database,Talend,我想从CSV文件中读取值和整数,并将它们插入到数据库表中。 但是,对于表的某一列,如果从CSV文件接收的值不属于某个区间,则要写入数据库的值应为NULL 例如,在我的Java应用程序中,我会:insert.setNull3,Java.sql.Types.INTEGER;在那种情况下 但是如果列类型是'NUMBER',我如何在Talend中做到这一点呢?只需在tFileInput和数据库输出实例之间使用一个tMap组件来进行这个简单的转换。在IS组件中,在右下窗格的输出模式中选中复选框,使字段可以

我想从CSV文件中读取值和整数,并将它们插入到数据库表中。 但是,对于表的某一列,如果从CSV文件接收的值不属于某个区间,则要写入数据库的值应为NULL

例如,在我的Java应用程序中,我会:insert.setNull3,Java.sql.Types.INTEGER;在那种情况下


但是如果列类型是'NUMBER',我如何在Talend中做到这一点呢?

只需在tFileInput和数据库输出实例之间使用一个tMap组件来进行这个简单的转换。在IS组件中,在右下窗格的输出模式中选中复选框,使字段可以为空。请小心,因为来自CSV的字段在默认情况下不可为空

最后,在右上窗格的输出转换中,在您强制为空的目标字段上写入三元表达式。例如:

假设您的传入连接称为input_row


我想说的是,如果Talend端和目标DB表上的字段都可以为null,那么无聊的java null就是您的朋友。

只需在tFileInput和数据库输出实例之间使用一个tMap组件即可进行此简单转换。在IS组件中,在右下窗格的输出模式中选中复选框,使字段可以为空。请小心,因为来自CSV的字段在默认情况下不可为空

最后,在右上窗格的输出转换中,在您强制为空的目标字段上写入三元表达式。例如:

假设您的传入连接称为input_row


我想说的是,如果Talend端和目标DB表上的字段都可以为null,那么无聊的java null就是您的朋友。

如果Integer字段可以为null,则可以。是否确定选中了该字段的正确选择框?我在回答中添加了一个屏幕截图。对不起,我认为问题出在我使用的数据库表中,该表不接受该列中的空值。在另一张桌子上,这很有效。谢谢:这个ifElse子句有什么问题吗:row1.x==5?0:row1.x==10?1:row1.x==15?2:row1.x==20?3:row1.x==30?4:row1.x==60?5:row1.x==24?6:null?当字段必须设置为NULL时,它给了我一个“NullPointerExpression”…这个问题通常是无关的。你确定它是NullPointerExpression而不是NullPointerException吗?。这意味着您正试图调用x字段上的一个空方法。尝试将非常复杂的表达式放在用户例程上,如果整数字段可为空,则可以从该例程进行调试。是否确定选中了该字段的正确选择框?我在回答中添加了一个屏幕截图。对不起,我认为问题出在我使用的数据库表中,该表不接受该列中的空值。在另一张桌子上,这很有效。谢谢:这个ifElse子句有什么问题吗:row1.x==5?0:row1.x==10?1:row1.x==15?2:row1.x==20?3:row1.x==30?4:row1.x==60?5:row1.x==24?6:null?当字段必须设置为NULL时,它给了我一个“NullPointerExpression”…这个问题通常是无关的。你确定它是NullPointerExpression而不是NullPointerException吗?。这意味着您正试图调用x字段上的一个空方法。尝试将您的非常复杂的表达式放在用户例程上,然后从那里进行调试
(input_row.field >= 0 && input_row.field <= 3) ? <value to write if inside interval> : null