`
jackytang520
  • 浏览: 135886 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java调用db2cmd命令导出数据

    博客分类:
  • Java
阅读更多
转自:http://blog.csdn.net/weoln/archive/2008/02/01/2076539.aspx

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

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

实施方法代码如下
/**
* 执行批处理
* @param  command
*/
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 off
rem
rem This is a Windows Shell Script that invokes a DB2 Command Window that
rem performs a database backup by calling the DB2 backup database command.
rem
set DB2INSTANCE=DB2
set DB2DATABASE=SAMPLE

db2 connect to %DB2DATABASE% user Administrator using Administrator
db2 export to "d:\employee.csv" of del modified by coldel, select * from EMPLOYEE
db2 disconnect %DB2DATABASE%
db2 terminate
分享到:
评论
1 楼 wenjianping007 2014-02-20  
报错了,不知道什么原因

相关推荐

Global site tag (gtag.js) - Google Analytics