我想从CSV文件中读取值(整数),并将它们插入到数据库表中。
但是,对于表的某一列,如果从CSV文件接收的值不属于某个间隔,则在数据库中写入的值应为NULL
。
例如,在我的Java App中,我做了:insert.setNull(3, java.sql.Types.INTEGER);
。
但如果列类型为“NUMBER”,我怎样才能在Talend
中执行此操作?
答案 0 :(得分:4)
只需在tFileInput和数据库输出实例之间使用tMap组件即可进行此简单转换。在theis组件内部的右下方窗格(输出模式)中,选中复选框以使您的字段可以为空。请注意,因为默认情况下来自CSV的字段不可为空。
最后,在右上窗格(输出转换)上,在目标字段(您被强制为可空的字段)上写入三元表达式。例如:
(假设您的传入连接称为input_row
)
(input_row.field >= 0 && input_row.field <= 3) ? <value to write if inside interval> : null
我想说的是,如果该字段在Talend端和目标数据库表上都可以为空,那么无聊的java null
就是你的朋友。