我想获取存储在CSV文件中的信息,并将其发送到Oracle数据库表(我正在使用'tOracleOutput'组件')。 但是,在将该信息发送到表中的相应列之前,我想更改一些字段。
例如:
如果CSV文件中的字段X = 15 - >我想在数据库表中的Y列中写0
如果CSV文件中的字段X = 30 - >;我想在数据库表中的Y列中写1
我可以使用'tJava'组件来执行此操作吗?如何访问'tJava'组件中从CSV文件收到的每个字段?
由于
答案 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