从java代码导入mysql数据库

时间:2012-11-05 06:33:08

标签: java mysql mysql-workbench

此代码确实恢复了mysql表,但应用程序几乎进入睡眠状态(20分钟以上)。和我的数据库例程没有进入mysql工作台,有人可以告诉我实际的解决方案是什么吗?

public static boolean restoreDB(String dbName, String dbUserName, String dbPassword, String source) {

    String[] executeCmd = new String[]{"C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin\\mysql", "--user=" + dbUserName, "--password=" + dbPassword, "-e", "source \"D:/khokher/mydb.sql\""};

    Process runtimeProcess;
    try {

        runtimeProcess = Runtime.getRuntime().exec(executeCmd);
        int processComplete = runtimeProcess.waitFor();

        if (processComplete == 0) {
            System.out.println("Backup restored successfully");
            return true;
        } else {
            System.out.println("Could not restore the backup");
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }

    return false;
}

1 个答案:

答案 0 :(得分:2)

使用Runtime.exec方法时,必须从其创建的进程中读取输出。否则,进程将填充其输出缓冲区并停止等待,直到您通过读取输出清空缓冲区。

要读取进程的输出,您可以从Process返回的exec对象获取输入流。您可以从getInputStream返回的流中读取标准输出,并从getErrorStream返回的流中读取标准错误。

如果可以,请使用Apache Commons Exec库。它使得启动外部流程并更容易处理其输入和输出。