Saudações amigos! Depois de muito pesquisar cheguei a solução de como fazer a exportação/importação de BDs MySQL rodando sobre Linux. Vi muitas propostas de soluções aqui no fórum, mas elas sempre apresentavam algum erro quando ia rodar (principalmente por causa dos redirecionadores utilizados no comando para fazer as exportações/importações). Compartilho com vocês o código (relativamente simples, mas que rendeu algumas horas de pesquisa):
e essa msm solução pra windows na parte do IMPORT como ficaria?
jotinhaelloco
Cara, creio que do mesmo jeito… Apenas atente-se que você tem que passar para o método importarBD o caminho do arquivo sem a extensão .sql, ou então retirar da linha
fiz do jeito q vc falou e ele naum achou o caminho, utlizando o windows
jotinhaelloco
Na linha
Stringcomando="/usr/bin/mysql";
coloque o caminho do mysql no windows, lembrando sempre que você deve usar duas barras. Por exemplo: C:\Windows\Teste
luxu
isso, isso só falta acertar o RESTORE o BACKUP já fiz…esse trecho é o q: --execute=source…deve ser nele q tem q passar o caminho.
jotinhaelloco
Umm… posta ai o erro pra gente ver…
luxu
agora nem dá erro mas tb naum restaura...
publicstaticvoidimportarBD(StringnomeArqOrigem,StringnomeBDDestino){try{Stringcomando="C:\\Program Files (x86)\\MySQL\\MySQL Server 5.1\\bin\\mysql";// String comando = "C:\\Arquivos de programas\\MySQL\\MySQL Server 5.1\\bin\\mysql"; ProcessBuilderpb=newProcessBuilder(comando,"--user=root","--password=admin",nomeBDDestino,"--execute=source"+nomeArqOrigem+".sql");pb.start();}catch(IOExceptionex){ex.printStackTrace();}}
jotinhaelloco
luxu:
agora nem dá erro mas tb naum restaura...
publicstaticvoidimportarBD(StringnomeArqOrigem,StringnomeBDDestino){try{Stringcomando="C:\\Program Files (x86)\\MySQL\\MySQL Server 5.1\\bin\\mysql";// String comando = "C:\\Arquivos de programas\\MySQL\\MySQL Server 5.1\\bin\\mysql"; ProcessBuilderpb=newProcessBuilder(comando,"--user=root","--password=admin",nomeBDDestino,"--execute=source"+nomeArqOrigem+".sql");pb.start();}catch(IOExceptionex){ex.printStackTrace();}}
Você está se atentando a questão do .sql?
luxu
num entendi, mas vendo o método de restaurar:
mysql -u root -p123 -h localhost banco_exemplo < backup_banco.sql
e comparando com o seu faltou a parte do localhost naum axa? o q faz esse –execute=source?
jotinhaelloco
luxu:
num entendi, mas vendo o método de restaurar:
mysql -u root -p123 -h localhost banco_exemplo < backup_banco.sql
e comparando com o seu faltou a parte do localhost naum axa? o q faz esse –execute=source?
Umm, quanto ao localhost, eu não uso para restaurações locais… O --execute=source faz com que o mysql leia de um arquivo os parâmetros de restauração do banco de dados… Eu tive muita dificuldade para usar os redirecionadores (< e >) por isso utilizei esse método…
luxu
ou seja ao invés de ‘<’ vc usou --execute=source?
jotinhaelloco
luxu:
ou seja ao invés de ‘<’ vc usou --execute=source?
Sim, essa é a idéia. Para testar se o comando de importação de fato está funcionando, tente fazer no prompt:
Lembro-lhe que no comando não usei aspas na parte do “source arquivo.sql” porque (não sei o motivo) só funciona sem… Mas no prompt precisa das aspas… Testa ai pra gente ver…
luxu
perfeito, restaurou…vou fazer o teste no Eclipse…
Cleber_Carvalho
Oi jotinhaelloco, li este tópico e estou com o mesmo problema do luxu testei está ultima dica no código java mas nada acontece nem erro nem restaurar.
Se puder me ajudar agradeço estou desesperado por uma solução.
a seguir o código o código que estou utilizando:
try{JFC_Backup.setVisible(true);Stringbd="sisdimapol";intresult=JFC_Backup.showOpenDialog(null);if(result==JFileChooser.OPEN_DIALOG){Filebkp;bkp=JFC_Backup.getSelectedFile();Stringarq=bkp.getPath();System.out.println("bd "+bd);System.out.println("arq "+arq);String[]cmd=newString[3];cmd[0]="cmd.exe";cmd[1]="/C";cmd[2]="C:\\wamp\\bin\\mysql\\mysql5.5.8\\bin\\mysql"+" -u root"+" -p qwe123"+bd+"-execute=source"+arq;System.out.println(cmd[1]);Runtimert=Runtime.getRuntime();System.out.println("Execing "+cmd[0]+" "+cmd[1]);proc=rt.exec(cmd);// any error message?StreamGobblererrorGobbler=newStreamGobbler(proc.getErrorStream(),"ERROR");// any output?StreamGobbleroutputGobbler=newStreamGobbler(proc.getInputStream(),"OUTPUT");// kick them offerrorGobbler.run();outputGobbler.run();// any error???intexitVal=proc.waitFor();if(exitVal==0){JOptionPane.showMessageDialog(null,"Backup Restaurado com sucesso !");}else{JOptionPane.showMessageDialog(null,"Falha ao restaurar backup. \n Verifique as configurações ou entre em contato com o suporte !");}}}catch(Exceptione){JOptionPane.showMessageDialog(null,e,"Erro!",2);}
Saída da Execução:
run:bdsisdimapolarqC:\Backup\Teste1.sql/CExecingcmd.exe/C// E fica assim e o programa trava ou fica executando sei lá, entra em lupe.