在将CSV字段导入DataBase之前修改它们

时间:2013-11-27 11:12:10

标签: java csv talend

我想获取存储在CSV文件中的信息,并将其发送到Oracle数据库表(我正在使用'tOracleOutput'组件')。 但是,在将该信息发送到表中的相应列之前,我想更改一些字段。

例如:

如果CSV文件中的字段X = 15 - >我想在数据库表中的Y列中写0

如果CSV文件中的字段X = 30 - >;我想在数据库表中的Y列中写1

我可以使用'tJava'组件来执行此操作吗?如何访问'tJava'组件中从CSV文件收到的每个字段?

由于

2 个答案:

答案 0 :(得分:3)

始终可以访问tJavaRow中的列。注意,tJava在main()中插入代码,但是你需要在每次迭代时执行代码。由于您需要为数据集的每一行计算表达式,因此需要tJavaRow。

基本上,如果'foo'是你的输入连接的名字而'X'是你的字段,那就意味着你有一个foo公共结构,里面有'bar'公共属性。因此,您可以使用foo.bar

进行访问

鉴于'bar'是与tOracleOutput的传出连接,在你的tJavaRow代码中你可以使用类似的东西:

bar.Y = (foo.X == 15 ? 0 : (foo.X == 30 ? 1 : null))

无论如何,为什么在tMap组件中使用简单的拖放和几行代码时可以使用tJavaRow组件?

答案 1 :(得分:0)

在插入查询中,您可以使用Oracle DECODE函数:

插入XTABLE ...... DECODE(supplier_id,15,0,                     30,1,                     45,2,                     elseval)your_column