jackytang520 发表于 2013-1-13 18:49:20

Java调用db2cmd命令导出数据

转自:http://blog.csdn.net/weoln/archive/2008/02/01/2076539.aspx

使用Runtime调用bat文件处理外部角本时一般使用 Runtime.getRuntime.exec(command)就可以了
如果批处理是使用db2的db2cmd时,dos窗口则会弹出db2命令窗口执行相关的处理角本,如果需要等特此批处理命令执行完成后再执行下面的流程就会出现相应的问题,如下例流程,将客户端将生成数据备份文件上传至服务器

因waitFor() 只能控制第一个dos窗口的进程,而无法控制下一个窗口,程序则会同步执行,当数据还没生成时就已经进行压缩处理了,当然会出现错误。
所以在执行批处理时将批出理文件隐式执行

实施方法代码如下
/*** 执行批处理* @paramcommand*/public void runBat(String command) {    Process child=   null ;    try {      Runtime rt =Runtime.getRuntime();      child = rt.exec(command);      //以下代码为控制台输出相关的批出理      String line = null ;      BufferedReader reader = new BufferedReader(new InputStreamReader(child.getInputStream()));      while ((line = reader.readLine()) != null ) {            System.out.println(line);      }      reader.close();      // 等待刚刚执行的命令的结束      while( true ){            if (child.waitFor()==   0 )break ;      }    } catch(Exception ex){      child.destroy();      ex.printStackTrace();    }}

批处理代码如下:
@echo offremrem This is a Windows Shell Script that invokes a DB2 Command Window thatrem performs a database backup by calling the DB2 backup database command.remset DB2INSTANCE=DB2set DB2DATABASE=SAMPLEdb2 connect to %DB2DATABASE% user Administrator using Administratordb2 export to "d:\employee.csv" of del modified by coldel, select * from EMPLOYEEdb2 disconnect %DB2DATABASE%db2 terminate
页: [1]
查看完整版本: Java调用db2cmd命令导出数据