有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用java导出oracle并获取状态

我想使用Java导出Oracle数据库,并获取导出状态(表示成功或失败),如果操作失败,应返回失败原因。 但我在这个问题上遇到了麻烦,导出是成功的,但我定义的标签总是错误的,并且返回[]。 我应该做些什么来获得真实状态或故障详细信息


public class DumpFile {
    /**
     * Default constructor
     */
    public DumpFile() {

    }

    /**
     * @return
     * @throws InterruptedException 
     */
    public static boolean LoadToOracle(String Path) throws InterruptedException {

        String importStr = "imp scott/tiger@orcl file="+Path+" full=y ignore=y";
        Process process_oracle = null;
        boolean flag = false;
        List<String[]> processListOracle = new ArrayList<String[]>();
        try {
            process_oracle = Runtime.getRuntime().exec(importStr);
            process_oracle.waitFor();
            BufferedReader input = new BufferedReader(new InputStreamReader(
                    process_oracle.getInputStream(), "utf8"));
            String line = "";
            while ((line = input.readLine()) != null) {
                System.out.println(line);
                String[] content = line.split("\n");
                processListOracle.add(content);
            }
            int exevalue = process_oracle.waitFor();
            System.out.println("exevalue:"+exevalue);
            input.close();
        } catch (Exception e) {
            e.printStackTrace();
        } 
        for (String[] line : processListOracle)
            for (String temp : line) {
                if (temp.trim().equals("successfully"))
                    flag = true;
            }

        return flag;
    }

    public static String exportFromOracle(String FileName) throws InterruptedException {
        String Path="/home/oracle/output/";
        String exportStr = "exp scott/tiger@orcl file="+Path+FileName;
        Process process_oracle = null;
        boolean flag = false;
        List<String[]> processListOracle = new ArrayList<String[]>();
        try {
            process_oracle = Runtime.getRuntime().exec(exportStr);

            BufferedReader input = new BufferedReader(new InputStreamReader(
                    process_oracle.getInputStream(), "utf8"));
            String line = "";
            while ((line = input.readLine()) != null) {
                System.out.println("line:"+line);
                String[] content = line.split("\n");
                processListOracle.add(content);
            }
            int exevalue = process_oracle.waitFor();
            System.out.println("exevalue:"+exevalue);
            input.close();

        } catch (Exception e) {
            e.printStackTrace();
        } 

        for (String[] line : processListOracle)
            for (String temp : line) {
                if (temp.trim().equals("successfully"))
                    flag = true;
            }
        System.out.println("flag:"+flag); 
        if (flag==true)
            return flag+"test"+Path;
        else{
            for (String[] line : processListOracle)
                System.out.println(line);
                }
            return processListOracle.toString();

        }

    public static void main(String[] args) throws Exception {
        String a=exportFromOracle("test.dmp");
        System.out.println("a.isEmpty:"+a.isEmpty());
        System.out.println(a);
    }

}

输出:
值:0
a、 isEmpty:false
[]


共 (1) 个答案

  1. # 1 楼答案

    我通过“日志文件”解决了这个问题,我使用imp导出数据库并输出日志文件,然后使用Java读取日志文件,以获取状态