源数据库ORACLE 目标数据库MongoDB,在源数据库添加删除、更新触发器
二、 *** 作步骤
添加表输入组件,连接ORACLE触发器记录表
添加JAVA代码组件,进行步骤跳转,根据输入的数据判断是删除或者更新,如果是删除,则跳转至MongoDB Delete步骤中,如果是更新的话,跳转至字段选择步骤中。JAVA代码中的详细信息如下:
import java.util.List
import org.pentaho.di.core.exception.KettleException
import org.pentaho.di.core.row.RowDataUtil
import org.pentaho.di.core.row.RowMeta
import org.pentaho.di.core.row.RowMetaInterface
import org.pentaho.di.core.row.ValueMeta
import org.pentaho.di.trans.Trans
import org.pentaho.di.trans.TransMeta
private Object[] previousRow//上一行
private RowSet t1 = null//业务表步骤
private RowSet t2 = null//删除步骤
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
Object[] r = getRow()//获取输入行
if ( first ) {
if ( getInputRowMeta() == null ) {
setOutputDone()//设置输出完成
return false
}
插入/更新1.你是否遇到了需要将mysql数据库中的所有表与数据迁移到Oracle。
2.你是否还在使用kettle重复的画着:表输入-表输出、创建表,而烦恼。下面为你实现了一套通用的数据库迁移流程。技术引导:实现之初,在kettle提供的例子中找到了一个类似的(samples\jobs\processalltables)。通过相关改造,终于达到目标。实现过程解剖:整套流程分为:2个job,4个trans。使用到的Trans插件:表输入、字段选择、复制记录到结果、从结果获取记录、设置变量、自定义java脚本、表输出。1.大job。2.要迁移的源库表名称获取,并设置到结果集,为下面的job使用。
3.配置子job为前面的每一条记录(即每个表)执行一次该子job4.下面是子job。5.获取记录中的表名称,并设置为到变量。6.读取当前表的结果信息,并在目标库中创建表(这个是难点)。因为只需要获取抓取要抽取表的结构信息,故在sql后面加上where1=2。下面代码是创建目标库表。Java代码publicbooleanprocessRow(StepMetaInterfacesmi,StepDataInterfacesdi)throwsKettleException{//First,getarowfromthedefaultinputhop//Object[]r=getRow()org.pentaho.di.core.database.DatabaseMetadbmeta=nulljava.util.Listlist=getTrans().getRepository().readDatabases()//3.x中获取资源库的所有数据库连接信息用getDatabases()if(list!=null&&!list.isEmpty()){for(inti=0i
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)