我想恢复我的sql数据库

时间:2012-08-09 13:17:58

标签: java mysql

我使用了以下代码从我的sql备份我的数据库,运行正常并在backup.sql备份。

import java.io.*;
import java.lang.*;
import java.util.*;

class Backup 
{
    public static void main(String[] args) 
    {
        String command = "D:\\MySQL\\bin\\mysqldump.exe -u root -proot yatin -r D:/backup.sql"; 
        System.out.println(command);
        Process runtimeProcess;
        try 
        {
            runtimeProcess = Runtime.getRuntime().exec(command);
            int processComplete = runtimeProcess.waitFor();
            if (processComplete == 0)
            {
                System.out.println("Backup created successfully");
                //return true;
            }
            else
            {
                System.out.println("Could not create the backup");
            }
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        } 
    }
}

但是当我执行下面的代码时,它让我处于等待状态。 formarly我的数据库名称是yatin,现在我想将它恢复到mybackup数据库,所以我创建了名为mybackup的数据库。 这里出了什么问题

import java.io.*;
import java.lang.*;
import java.util.*;

class Restore 
{
    public static void main(String[] args) 
    {
        String command = "D:\\MySQL\\bin\\mysql.exe -u root -proot mybackup< D:/backup.sql";
        //String [] command = new String[]{"mysql",mybackup,"D:\\MySQL\\bin\\mysql.exe -u root -proot  < D:/backup.sql"; 
        //String[] command = new String[]{"mysql", [database], "--user=" + [username], "--password=" + [password], "-e", " source " + [absolute path to the sql file]};
        //String[] command = new String[]{"mysql",mybackup, "-u=" +root, "-p="+root, "-e", " source " +D:/backup.sql};
        System.out.println(command);
        Process runtimeProcess;
        try 
        {
            runtimeProcess = Runtime.getRuntime().exec(command);
            int processComplete = runtimeProcess.waitFor();
            if (processComplete == 0)
            {
                System.out.println("Restore created successfully");
                //return true;
            }
            else
            {
                System.out.println("Could not restore");
            }
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        } 
    }
}

更新1

mysql> mysql -u root -proot mybackup < D:/backup.sql;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -proot mybackup < D:/backup.sql' at line 1

1 个答案:

答案 0 :(得分:0)

此命令应该在mysql控制台之外。您无需登录mysql并运行此命令,因为mysql -u root -p已经为您执行此操作。

cmd > mysql -u root -proot mybackup < D:\backup.sql;