kettle整合到web项目并运用quartz实现定时任务

目前正在做的项目需要用将主业务库的部分数据同步出去以作统计用,为了保持数据实时同步需要定时执行同步操作。同步工具运用了比较流行的ETL工具kettle,首先我们在kettle界面工具Spoon中设计好同步文件如 studentTableETL.ktr,然后在web项目通过quartz定时调用studentTableETL.ktr即可。


1、以下是pom.xml中的依赖包

	    pentaho.kettle
	    kettle-core
	    3.2.0-GA
		
		
		    pentaho.kettle
		    kettle-db
		    3.2.0-GA
		
		
		    pentaho.kettle
		    kettle-engine
		    3.2.0-GA
		
		
		    pentaho.kettle
		    kettle-ui-swt
		    3.2.0-GA
		
		
		    pentaho.kettle
		    kettle-vfs
		    3.2.0-GA
		
		
		    ognl
		    ognl
		    3.0.3
		
		
		   org.quartz-scheduler
		   quartz
		
		
		   log4j
		   log4j
		
		
		    commons-digester
		    commons-digester
		    1.8
		


2、spring-quartz.xml



       
       
           
           
            true   
           
          
              
               
                 
                
            
           
       
  
   	
      
           
               
        
           
            
           
           
           0 59 23 * * ?
                  
     
    
      
       
       
           
        kettleEtl   
           
     
   	
       
       
   	  
   	




3、KettleLoader.java

package com.anyuan.edu.sas.service;


import org.pentaho.di.core.exception.KettleException;  
import org.pentaho.di.core.util.EnvUtil;  
import org.pentaho.di.trans.StepLoader;  
import org.pentaho.di.trans.Trans;  
import org.pentaho.di.trans.TransMeta;  


/**
 * kettle文件加载类
 * @author gaozr
 *
 */




public class KettleLoader{
	public void kettleEtl() throws KettleException {
		String[] etlTables = {"classroomTableETL","studentTableETL","courseTableETL","chapterTableETL"};
        int monitor = 0;
        try{
			for(int i=0;i
我这里每次执行4个ktr文件,所以定义了一个数组String[] etlTables = {"classroomTableETL","studentTableETL","courseTableETL","chapterTableETL"};然后循环调用

如果只有一个文件的话,就不需要这个循环了。


以下为项目结构

kettle整合到web项目并运用quartz实现定时任务_第1张图片


你可能感兴趣的:(kettle,etl)