Como Fazer um Restore no java Banco Mysql

Olha só pessoal faz umas 3 semanas que tento resolver o problema do restore na minha aplicação java, eu consigo gerar meu backup sem problemas com o seguinte codigo:

[code]
private void jBBanckupActionPerformed(java.awt.event.ActionEvent evt) {
copiaSeguranca();
}

public void copiaSeguranca(){
      String comando="C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysqldump.exe";
  ProcessBuilder pb=new ProcessBuilder(comando,"--user=root","--password=root","agenda","--result-file=C:\\BKP_Agenda\\BKP_Agenda.sql");
   JOptionPane.showMessageDialog(this, "Cópia de segurança realizada com sucesso!","Backup",JOptionPane.CLOSED_OPTION);
  try {
        pb.start();
    } catch (IOException ex) {
       JOptionPane.showMessageDialog(this, "Cópia de segurança Não realizada! Problema no jBBackup","Backup",JOptionPane.CLOSED_OPTION);

    }
}[/code]

Como fazer o Restor do Backup gerado “BKP_Agenda.sql”?
Tipo para restaura este arquivo eu tenho que montar o banco na mão e fazer os importes.

gostaria de um codigo que eu conseguice fazer o restore pode até ser via cmd pois ai crio um .bat que executa tal codigo quando clico no botão de restore na aplicação.

se alguem tiver uma ideia eu agradeço.

um abraço e obrigado.
dpweimar

mysql -hservidor -uusuario -psenha bancodedados < seuarquivo.sql

Um abraço.

tb da para fazer o contrario

mysql -hservidor -uusuario -psenha bancodedados > seuarquivo.sql

Valeu pela dicas!
Mais o seguite tal codigo so funciona no pront do dos “CMD”

tentei rodar o codigo pelo java mais não esta rodando ele não aceita o comando alguem tem alguma ideia do que pode ser?

segue o codigo do Restore

[code]
private void jBRestoreActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String comando=“C:\Program_Files\MySQL\MySQL_Server_5.1\bin\”;

  ProcessBuilder pb=new ProcessBuilder(comando,"mysql -hlocalhost -uroot -proot agenda < c:\bkp_agenda\bkp_agenda.sql");
  try {
        pb.start();
         JOptionPane.showMessageDialog(this, "Restauração realizada com sucesso!","Restore",JOptionPane.CLOSED_OPTION);
      } catch (IOException ex) {
       JOptionPane.showMessageDialog(this, "Restauração Não realizada! Problema no jBRestore","Restore",JOptionPane.CLOSED_OPTION);

    }
}[/code]

[code] private void jBRestoreActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String comando=“C:\Program_Files\MySQL\MySQL_Server_5.1\bin\”;

try {  
    comando+="mysql -hlocalhost -uroot -proot agenda < c:\bkp_agenda\bkp_agenda.sql";  
    Runtime.getRuntime().exec(command);  
         JOptionPane.showMessageDialog(this, "Restauração realizada com sucesso!","Restore",JOptionPane.CLOSED_OPTION);  
         } catch (Nao sei de cabeça qual a Exception) {  
         JOptionPane.showMessageDialog(this, "Restauração Não realizada! Problema no jBRestore","Restore",JOptionPane.CLOSED_OPTION);  
        }  
  }  [/code]

Não seria por causa da barra no caminho do arquivo sql?

Tente:
comando+=“mysql -hlocalhost -uroot -proot agenda < c:\bkp_agenda\bkp_agenda.sql”;

[quote=nilsonuehara]Não seria por causa da barra no caminho do arquivo sql?

Tente:
comando+=“mysql -hlocalhost -uroot -proot agenda < c:\bkp_agenda\bkp_agenda.sql”; [/quote]

Cara já tinha percebido depois que pois o codigo mais mesmo assim não roda via java.

pelo cmd 100%

valeu até então.

Isso deve resolver

String[] cmd = {"cmd.exe","/c","C:\\Program_Files\\MySQL\\MySQL_Server_5.1\\bin\\mysql.exe --host=localhost --user=root --password=root agenda < c:\\bkp_agenda\\bkp_agenda.sql"}; try { Runtime.getRuntime().exec(cmd); } catch (Exception e) { e.printStackTrace(); }

Nada! que coisa de louco!!!


private void jBRestoreActionPerformed(java.awt.event.ActionEvent evt) {                                          
          // TODO add your handling code here:
            
              String comando="C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysql.exe";

        ProcessBuilder pb=new ProcessBuilder(comando,"-hlocalhost -uroot -proot agenda" , "<" ,"C:\\BKP_Agenda\\BKP_Agenda.sql");
        try {
              pb.start();
               JOptionPane.showMessageDialog(this, "Restauração realizada com sucesso!","Restore",JOptionPane.CLOSED_OPTION);
            } catch (IOException ex) {
             JOptionPane.showMessageDialog(this, "Restauração Não realizada! Problema no jBRestore","Restore",JOptionPane.CLOSED_OPTION);

          }

    }                                         

ele Roda sem dar erro mais não faz o restore no banco!

Resolvido!

fiz uma função que chama um arquivo.bat e ele executa o restore pra mim. Sei que não é a melhor soulução mais funciona! hehhe.

Valeu pela ajuda de todos.

segue o codigo do bat e da função em java!

.bat

cd..
cd..
cd..
cd..
cd..
cd..
cd..
cd..
cd..
cd..
cd..
cd..
cd..
cd..
cd Program Files
cd MySQL
cd mysql Server 5.1
cd bin
mysql -hlocalhost -uroot -proot agenda < C:\Agenda_de_Contatos\bkp_agenda\bkp_agenda.sql
exit

Java

private void jBRestoreActionPerformed(java.awt.event.ActionEvent evt) {                                          
        try {
            // TODO add your handling code here:
            Runtime.getRuntime().exec("cmd /c start C:\\Agenda_de_Contatos\\BKP_Agenda\\restore.bat");
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(this, "Restore Não realizado! Problema no jBRestore","Restore",JOptionPane.CLOSED_OPTION);

        }
    } 

pq vc n faz assim

cd c:\\Program Files\\MySQL \\mysql Server 5.1\\bin
mysql -hlocalhost -uroot -proot agenda < C:\Agenda_de_Contatos\bkp_agenda\bkp_agenda.sql  
exit  

esse monte de cd… me parece gambiarra…

[quote=Requena]pq vc n faz assim

cd c:\\Program Files\\MySQL \\mysql Server 5.1\\bin
mysql -hlocalhost -uroot -proot agenda < C:\Agenda_de_Contatos\bkp_agenda\bkp_agenda.sql  
exit  

esse monte de cd… me parece gambiarra…[/quote]

Cara Tentei com estes paramentros mais não rolou o unico jeito que rodou foi assim!
Mais valeu pela força!

Pessoal, estava com o mesmo problema e dei uma pesquizada e achei em um forúm americano que o ProcessBuilder não pode conter espaços em brancos na string dos parametros. Então temos que fazer:

ProcessBuilder pb = new ProcessBuilder(comando, “–host=127.0.0.1”,"–user=usuario","–password=senha","–databases", “seubanco”, “–result-file=C:\BKP\arquivo.sql”);

Pra mim resolveu o problema.

Espero ter ajudado!

O problema na verdade aí é o redirecionamento > e < isso não funciona dentro do java, isso é um recurso do sistema operacional,

o que voce pode fazer via java é carregar o arquivo SQL com bufferedreader e depois executa-lo via jdbc, tambem vai resolver seu problema, e vai ser tudo via java:

BufferedReader br = new BufferedReader(new FileReader(new File(&quot;/caminho/do/backup&quot;)));

StringBuffer sqlBuffer = new StringBuffer();
String linha=&quot;&quot;;

while (linha!=null){
    linha = br.readLine();
    if (linha!=null){
         sqlBuffer.append(linha);
    }
}

meujdbc.execute(sqlBuffer.toString());

Veja bem, isso é so a ideia, eu escrevi direto aqui no guj, entao nem sei se o codigo ta certo, é so pra vc entender o que eu queria dizer.

[]s

Kemper

Po gente, que isso… Sofri pra caramba meu… kkkk

Mas ta aí o código… espero que ainda sirva pro pessoal… rsrs

try{
            String comando = "cmd.exe /c \"C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysql\" -hlocalhost -uroot -ppassword database < C:\\backup.bkp";
            Runtime.getRuntime().exec(comando);
        }catch(Exception e){
            e.printStackTrace();
        }

Abraço!!

Queria agradecer a todos que postaram nesse tópico!
Precisava de um backup e restore para meu projeto na faculdade e encontrei tudo aqui!
Valeu mesmo!
Abraços!