如何使用java备份和恢复mysql数据库

Har*_*sha 2 java mysqldump

我有一个小应用程序,我将用它来备份和恢复一个mysql数据库,编码备份如下,它工作正常,

....
String command = "mysqldump --host=" + dataBase.getHost() + " --user=" + dataBase.getUserName() + " --password=" + dataBase.getPassword() + " "
                + dataBase.getDatabaseName() + " -r " + dataBase.getBackupPath() + "/ofm_mnu_backup_" + bkDate + ".sql";
        System.out.println(command);
        Process p = null;
        try {


            Runtime runtime = Runtime.getRuntime();
            p = runtime.exec(command);

            int processComplete = p.waitFor();

            if (processComplete == 0) {

                System.out.println("Backup created successfully");

            } else {
                System.out.println("Could not create the backup");
            }
....
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用以下代码恢复数据库时它无法正常工作,请帮助

  ........
    String command = "mysqldump --host=" + dataBase.getHost() + " --user="+dataBase.getUserName() + " --password= " + dataBase.getPassword()+""+dataBase.getDatabaseName() + "  " + dataBase.getBackupPath();
        Process p = null;

        try {
            System.out.println(command);
            Runtime runtime = Runtime.getRuntime();
            p = runtime.exec(command);
            int processComplete = p.waitFor();

            if (processComplete == 0) {
                System.out.println("Backup restored successfully");

            } else {
                System.out.println("Could not restore the backup");
            }
     ......
Run Code Online (Sandbox Code Playgroud)

经过这么多谷歌搜索,我找到了答案,

  ......
  String[] executeCmd = new String[]{"mysql", [database], "--user=" + [username],"--password=" + [password], "-e", " source " + [absolute path to the sql file]};
  p = Runtime.getRuntime().exec(executeCmd);
  int processComplete = p.waitFor();
  ......
Run Code Online (Sandbox Code Playgroud)

在上面的代码中最重要的是**"source"+ [sql文件的绝对路径]**'source'字和文件路径之间不应该有逗号.

这对我有用,我希望它对你们也有用.

Sup*_*ron 8

我不认为你正在使用这个mysqldump命令.你不应该使用<>字符来表示备份/恢复?这将在这里详细讨论.像这样备份:

String command = "mysqldump --host=" + dataBase.getHost() + " --user=" + dataBase.getUserName() + " --password=" + dataBase.getPassword() + " "
            + dataBase.getDatabaseName() + " > " + dataBase.getBackupPath() + "/ofm_mnu_backup_" + bkDate + ".sql";
Run Code Online (Sandbox Code Playgroud)

并恢复:

String command = "mysqldump --host=" + dataBase.getHost() + " --user=" + dataBase.getUserName() + " --password=" + dataBase.getPassword() + " "
            + dataBase.getDatabaseName() + " < " + dataBase.getBackupPath() + "/ofm_mnu_backup_" + bkDate + ".sql";
Run Code Online (Sandbox Code Playgroud)