How to restore a MySQL database backup using Java

前端 未结 8 2137
日久生厌
日久生厌 2020-12-10 22:57

I was able to create a backup of my current mysql database as .SQL file using the mysqldump.exe with the help of the following java code. <

相关标签:
8条回答
  • 2020-12-10 23:30
    Runtime.getRuntime().exec("mysql -u username -ppassword database_name  FILE.sql")
    

    This statement will regenerate database from the file

    0 讨论(0)
  • 2020-12-10 23:31

    Use the same dump to import like this.

    Process runProcess = Runtime.getRuntime().exec("C:\\SCM Files\\SQL Backup\\mysqldump.exe -uroot -p123 rr  database_name < "C:\\SCM Files\\SQL Backup\\RR.sql");
    
    0 讨论(0)
  • 2020-12-10 23:31
    public static void mysqlExport(String host, String port, String user, String password, String dbname, String table, String folder, String query) {
    
        System.out.println("------ Exporting "+dbname+"."+table+" at "+folder+"---------------------------");
        try {
            String command = "mysqldump --host=" + host + " --port=" + port + " --user=" + user + " --password=" + password + " " + dbname + " " + table + " --where=\"" + query + "\" > " + folder + table + ".sql";
            System.out.println(command);
            int returnValue = executeCommand(Arrays.asList("mysqldump", "--host="+host, "--port="+port, "--user="+user, "--password="+password, dbname, table, "--where="+query), folder + table + ".sql");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
    
    public static void mysqlImport(String host, String port, String user, String password, String dbname, String table, String folder) {
    
        System.out.println("------ Importing "+dbname+"."+table+" at "+folder+"---------------------------");
        try {
            String command = "mysql --host=" + host + " --port=" + port + " --user=" + user + " --password=" + password + " " + dbname + " " + table + " < " + folder + table + ".sql";
            System.out.println(command);
            int returnValue = executeCommand(new String[]{"mysql", "--host="+host, "--port="+port,  "--user=" + user, "--password=" + password, dbname, "-e", "source " + folder + table + ".sql"});
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
    
    public static int executeCommand(String[] commands) throws IOException
    {
        System.out.println(commands.toString());
        Process process = Runtime.getRuntime().exec(commands);
        return dumpProcess(process);
    }
    
    public static int executeCommand(List<String> commands, String folder) throws IOException
    {
        ProcessBuilder builder = new ProcessBuilder(commands);
        System.out.println(builder.command());
        builder.redirectOutput(new File(folder));
        Process process = builder.start();
        return dumpProcess(process);
    }
    
    public static int dumpProcess(Process process) throws IOException
    {
        int returnValue = -1;
        try {
            String s = null;
            process.waitFor();
            returnValue = process.exitValue();
            if (returnValue == 0) {
                System.out.println("Command successful !!");
                BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
                System.out.println("Here is the standard output of the command:\n");
                while ((s = stdInput.readLine()) != null) {
                    System.out.println(s);
                }
            } else {
                System.out.println("Command failed. Exist Status code = "+returnValue);
                BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream()));
                System.out.println("Here is the standard error of the command (if any):\n");
                while ((s = stdError.readLine()) != null) {
                    System.out.println(s);
                }
            }
    
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    
        return returnValue;
    }
    
    0 讨论(0)
  • 2020-12-10 23:34

    You have to use java swings where you can design forms. Here is some code which can do that.

    import javax.swing.JFrame;
    
    public final class RestoreMySQLDatabase extends JFrame {
        private static final long serialVersionUID = 1L;
        public static void main(String[] args) {
            RestoreMySQLDatabase restoreMySQL = new RestoreMySQLDatabase();
            restoreMySQL.setTitle("Restore mysql database");
            javax.swing.JButton butRestore = new javax.swing.JButton("Restore");
            butRestore.addActionListener(new java.awt.event.ActionListener(){
                public void actionPerformed(java.awt.event.ActionEvent event){
                    try{
                        Runtime.getRuntime().exec("C:\\SCM Files\\SQL Backup\\mysqldump.exe -uroot -p123 rr -r\"C:\\SCM Files\\SQL Backup\\RR.sql");
                        javax.swing.JOptionPane.showMessageDialog((javax.swing.JButton)event.getSource(), "Successfully restored");
                    }catch(java.lang.Exception e){
                        javax.swing.JOptionPane.showMessageDialog((javax.swing.JButton)event.getSource(), "Not able to restore");
                    }
                }
            });
        }
    
    }
    
    0 讨论(0)
  • 2020-12-10 23:38

    For restore use the executeCmd in the form m.Torkashvand provided (array of strings). A working example on how to use these commands from JSP code can be found here

    0 讨论(0)
  • 2020-12-10 23:39

    I tried this code and works as perfect!

    String[] restoreCmd = new String[]{"mysql ", "--user=" + DB.DB_USERNAME, "--password=" + DB.DB_PASSWORD, "-e", "source " + pathToFile};
        try {
            Process runtimeProcess = Runtime.getRuntime().exec(restoreCmd);
            int processComplete = runtimeProcess.waitFor();
            if (processComplete == 0) {
                System.out.println("Done");
            } else {
                System.out.println("Failed");
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    
    0 讨论(0)
提交回复
热议问题