資源簡介
java調用shell向DataX傳遞參數,where條件,包含特殊字符。java調用shell向DataX傳遞參數,where條件,包含特殊字符

代碼片段和文件信息
import?java.io.BufferedReader;
import?java.io.IOException;
import?java.io.InputStreamReader;
import?java.util.ArrayList;
import?java.util.Arrays;
import?java.util.Collections;
import?java.util.List;
public?class?CommandExe?{
public?static?void?main(String[]?args)?{
try?{
List?command?=?new?ArrayList<>();
//java調用shell命令并且傳遞帶“的參數時,用sh?-c?整個命令的方式
command.add(“sh“);
command.add(“-c“);
command.add(“python?/opt/datax/bin/datax.py?-p?\“-DtableName=etl_job?-DsqlWhere=LAST_ETL_DATE\\<\\=to_date\\(\\‘20170801\\‘\\‘yyyyMMdd\\‘\\)\“?/opt/datax/job/etl_job_oracle2postgresql_sqlwhere_full.json“);
//在etl_job_oracle2postgresql_sqlwhere_full.json中設置了tableName和sqlWhere?2個參數,用命令傳參到json文件
//ps:where條件中不能有空格,并且shell中的特殊字符如??‘??(?等要用\轉義
StringBuffer?sb=new?StringBuffer();
for(String?com:command){
sb.append(com+“?“);
}
System.out.println(sb.toString());
ProcessBuilder?sqoopProcessBuilder?=?new?ProcessBuilder(command);
Process?process?=?sqoopProcessBuilder.start();
?BufferedReader?input?=?new?BufferedReader(new?InputStreamReader(process.getInputStream()));??
????????????String?line?=?““;??
????????????while?((line?=?input.readLine())?!=?null)?{??
????????????????System.out.println(line);
????????????}??
????????????input.close();??
int?exitValue?=?process.waitFor();
if?(exitValue?!=?0)?{
System.out.println(exitValue);
Exception?e?=?new?Exception();
throw?e;
}else{
System.out.println(“==========successfully?executed?extract?job==========“);
}
}?catch?(Exception?e1)?{
e1.printStackTrace();
}
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????1730??2017-08-16?17:48??CommandExeHan.java
?????文件????????1464??2017-08-16?11:02??etl_job_oracle2postgresql_sqlwhere_full_han.json
評論
共有 條評論