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:
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.
[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]
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);
}
}
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”);
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("/caminho/do/backup")));
StringBuffer sqlBuffer = new StringBuffer();
String linha="";
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.
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!