Java - Mysql Export and Import DB

Asked

Viewed 695 times

0

Good afternoon.

I created a DB in Mysql named Pizzeria. I have tried various means of creating DB backup but haven’t had success.

The last code I tried was:

try {
    File file = new File("Backup");
    file.mkdir();
    String nomeBkp = tfDiretorio.getText() + ".sql";
    System.out.println(nomeBkp);
    String dump = "cmd.exe /c C:\\MySQL\\MySQL Workbench CE 6.1.6\\mysqldump.exe --user=root --password=123456 pizzaria > Backup/" + nomeBkp;
    Runtime bkp = Runtime.getRuntime();
    bkp.exec(dump);
    JOptionPane.showMessageDialog(rootPane, "Backup realizado com sucesso!");
} catch (IOException ex) {
    JOptionPane.showMessageDialog(null, "Erro!" + ex.getMessage());
}
  • You pass a pro command windows command. If you try to run it in the command itself works?

2 answers

1

Mysql Export

                // Variáveis
                String host = "localhost";
                String port = "3306";
                String dbname = "pizzaria";
                String user = "root";
                String pass = "123456";
                String location = tfDiretorio.getText().trim();
                @SuppressWarnings("unused")
                int s;

                // Processo
                Process p;
                p = Runtime.getRuntime().exec("C:\\MySQL\\MySQL Workbench CE 6.1.6\\mysqldump -h"+host+" -port"+port+" -u "+user+" -p"+pass+" --add-drop-database -B "+dbname+" -r "+location);
                s = p.waitFor();
                dispose();
                JOptionPane.showMessageDialog(null, "Banco de Dados foi Exportado!");

            } catch (MalformedURLException x) {
                x.printStackTrace();
            } catch(IOException y){
                y.printStackTrace();
            } catch(InterruptedException z){
                z.printStackTrace();
            }

Import to Mysql

            // Variáveis
            String user = "root";   // UsuárioDB
            String pass = "123456"; // Senha do UsuárioDB
            String location = tfDiretorio.getText().toString().replaceAll("file:/", "").trim();

            // Processo
            try{
                String[] executeCmd = new String[]{"C:\\MySQL\\MySQL Workbench CE 6.1.6\\mysql","-hlocalhost","-port3306", "--user=" + user, "--password=" + pass, "-e", "source "+location};
                Process p = Runtime.getRuntime().exec(executeCmd);
                @SuppressWarnings("unused")
                int in = p.waitFor();
                dispose();
                JOptionPane.showMessageDialog(null, "Banco de Dados foi Importado!");
            } catch (InterruptedException x) {
                x.printStackTrace();
            } catch(IOException y){
                y.printStackTrace();
            }

0

Hello. I believe the question has already been answered, but I send the code I use to back up the Mysql database

/**
 * Classe que realiza de banco de dados MySql
 * 
 * @param host - Endereço host do banco de Dados ex:localhost
 * @param bd - Nome do Banco de Dados ex:meubd
 * @param usuario - Usuario de acesso ao banco de dados : ex:root
 * @param senha - Senha de Acesso ao banco de dados : ex:1234
 * @param location - Local que será salvo o sql contendo apenas o nome sem a extensão ex:c:\\backup
 * @return - uma string informando se o processo foi salvo com sucesso ou não
 */
public static String exportarBD(String host, String bd, String usuario, String senha, String location) {

    //local onde se encontra o MysqlDump
    dump.append("C:\\Program Files\\MySQL\\MySQL Workbench 6.3 CE\\mysqldump.exe");
    //solicitando o host ex:localhost
    dump.append(" -h");
    dump.append(host);
    //solicitando o usuario
    dump.append(" -u");
    dump.append(usuario);
    //solicitando a senha
    dump.append(" -p");
    dump.append(senha);
    //solicitando o bd
    dump.append(" --add-drop-database -B");//se existir o sql, sobrescreverá
    dump.append(bd);
    //solicitando o local para salvar ex:c\\mysql
    dump.append(" -r");
    dump.append(location);
    dump.append(gerarNomeComData());//esse metodo devolverá o ano seguido da hora ex:mysql20170609_073230
    dump.append(".sql");//add a extensão .sql

    Process p;
    try {
        p = Runtime.getRuntime().exec(dump.toString());
        p.waitFor();
    } catch (IOException e) {
        e.printStackTrace();
        return "Erro ao realizar Backup";
    } catch (InterruptedException e) {
        e.printStackTrace();
        return "Erro ao realizar Backup";
    }
    return "Banco de Dados foi Exportado com sucesso para a pasta \n"+ location;

}

/**
 * 
 * @return a data com o horario
 */
private static String gerarNomeComData() {

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd _ hh:mm:ss");

    Calendar c = Calendar.getInstance();
    String s = sdf.format(c.getTime());
    return s.replace("/", "").replace(" ", "").replace(":", "");
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.