@Value("${JDBC_DRIVER}") String JDBC_DRIVER; @Value("${DB_URL}") String DB_URL; @Value("${USER}") String USER; @Value("${PASS}") String PASS; @Value("${file_path}") String file_path; @Value("${DB_IP}") String DB_IP; @Value("${DB_PORT}") String DB_PORT;
public void excluteScript(String dbname,String path) throws Exception { Runtime rt = Runtime.getRuntime(); //Process child = rt.exec("mysql -uroot -proot --default-character-set=utf8 hbase "); Process child = rt.exec("mysql -h "+DB_IP+" -P "+DB_PORT+" -u"+USER+" -p"+PASS+" --default-character-set=utf8 "+dbname+" "); OutputStream out = child.getOutputStream();//控制台的输入信息作为输出流 String line; StringBuffer sb = new StringBuffer(""); String outStr; BufferedReader br = new BufferedReader(new InputStreamReader( new FileInputStream(path), "utf8")); while ((line = br.readLine()) != null) { sb.append(line + "\r\n"); } outStr = sb.toString(); OutputStreamWriter writer = new OutputStreamWriter(out, "utf8"); writer.write(outStr); // 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免 writer.flush(); // 别忘记关闭输入输出流 out.close(); br.close(); writer.close(); if(child.waitfor()==0){ System.out.println("执行成功") } }
网上查的资料实现
http://elvis4139.iteye.com/blog/2076101