java代码定时执行datax脚本

本文参考:https://blog.csdn.net/m0_37691745/article/details/79286852
代码中需要调用datax脚本实现数据同步,此时我只使用了执行datax脚本的代码,调度没有使用。

import java.io.BufferedReader;
import java.io.File;
import java.io.FilenameFilter;
import java.io.InputStreamReader;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
 
public class ExeDatax {
	public static Long oneDay = (long)24 * 60 * 60 * 1000;		//每一天批量执行一次
	public static Long initDelay = (long)0 * 1000;			//延迟0分钟开始执行
	public static String jsonPath = "E:/work/json"; //json文件夹地址
	public static String dataxPath = "E:work/datax/datax/bin/datax.py";	//datax的python文件地址
	public static void main(String[] args) {
		//定时任务
		ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
		service.scheduleAtFixedRate(new Runnable(){
 
			@Override
			public void run() {
				exeDatax();
			}
			
		}, initDelay, oneDay, TimeUnit.MILLISECONDS);
        
    }
	//批量执行datax
	public static void exeDatax(){
		try {
            System.out.println("------------------start----------------------");
            String[] str = getFileName(jsonPath);
            for (String name : str) {
    			String windowcmd = "python "+dataxPath+" "+jsonPath+"/"+name;
                System.out.println(windowcmd);
                Process pr = Runtime.getRuntime().exec(windowcmd);
                BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
                String line = null;
                while ((line = in.readLine()) != null) {
                	System.out.println(line);     
                }
                in.close();
                pr.waitFor();
    		}
            System.out.println("----------------end------------------");
        } catch (Exception e) {
            e.printStackTrace();
        }
	}
	//获取文件夹下所有 json 文件名
	public static String[] getFileName(String path) {
        File file = new File(path);
        String[] fileName = file.list(new FilenameFilter() {
                @Override
                public boolean accept(File dir, String name) {
                        if (name.endsWith(".json")) {
                                return true;
                        }
                        return false;
                }
        });
        return fileName;
}
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值