style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Backup y Restaurar MySQL desde Java

Saludos estimados foristas, tengo una consulta.

Resulta que estot trabajando desde Java con una base de datos en MySQL. Necesito Instalr la Base de datos desde mi PC a otra. Para ello quiero hacer un Backup por medio de Software en NetBean 6.9. No tengo problemas al generar el backup ya que esto funciona perfectamente.

Es problema ocurre cuando quiero Actualizar la BD a partir del respaldo que acabo de hacer.

He aqui el codigo con que genero el respaldo, la funcion que llamo es:
GenerarBackupMySQL()
Utilizo un JFileChooser para guardar el archivo y le agrego la fecha de respaldo

Aqui el corazon es el comando mysqldump

    void GenerarBackupMySQL(){
        int resp;
        resp=RealizarBackupMySQL.showSaveDialog(this);//JFileChooser de nombre RealizarBackupMySQL
        if (resp==JFileChooser.APPROVE_OPTION) {//Si el usuario presiona aceptar; se genera el Backup
            try{
                Runtime runtime = Runtime.getRuntime();
                File backupFile = newFile(String.valueOf(RealizarBackupMySQL.getSelectedFile().toString())+Diahoy +"-"+Meshoy+"-"+Aniohoy+".sql");
                FileWriter fw = new FileWriter(backupFile);
                Process child = runtime.exec("C:\\Archivos de programa\\MySQL\\MySQL Server 5.1\\bin\\mysqldump --opt --password=HdMc --user=root --databases bd_ueta_mysql");

                InputStreamReader irs = new InputStreamReader(child.getInputStream());
                BufferedReader br = new BufferedReader(irs);

                String line;
                while( (line=br.readLine()) != null ) {
                    fw.write(line + "\n");
                }
                fw.close();
                irs.close();
                br.close();

                JOptionPane.showMessageDialog(null, "Archivo generado","Verificar",JOptionPane. INFORMATION_MESSAGE);
            }catch(Exception e){
                JOptionPane.showMessageDialog(null, "Error no se genero el archivo por el siguiente motivo:"+e.getMessage(), "Verificar",JOptionPane.ERROR_MESSAGE);
            }
            JOptionPane.showMessageDialog(null, "Archivogenerado","Verificar",JOptionPane.INFORMATION_MESSAGE);
        } else if (resp==JFileChooser.CANCEL_OPTION) {
            JOptionPane.showMessageDialog(null,"Ha sido cancelada la generacion del Backup");
        }
    }

Bien con esto no hay problema, ya que genera el archivo en la carpeta que le indico, con el nombre que le indico en el JFileChooser y verifico el respaldo abriendo el archivo con Wordpad.

El problema ocurre cuando quiero utilizar este respaldo para actualizar la Bd. Para ello utilizo el codigo

    void ActualizarBackupMySQL(){
        int resp;
        resp=RealizarBackupMySQL.showOpenDialog(this);//Mustra el cuadro con la Opcion Guardar
        if (resp==JFileChooser.APPROVE_OPTION) {//Si el usuario presiona aceptar(Guardar); Backup
            try{
                String ubicacion= String.valueOf(RealizarBackupMySQL.getSelectedFile().toString().trim());
               
                Process child = Runtime.getRuntime().exec("cmd /c mysql --password=HdMc --user=root --databases bd_ueta_mysql > " + ubicacion);
             OptionPane.showMessageDialog(null,"BaseActualizada","Verificar",JOptionPane.INFORMATION_MESSAGE);
                }catch(Exception e){
                JOptionPane.showMessageDialog(null, "Error no se actualizo la DB por el siguiente motivo: " + e.getMessage(), "Verificar",JOptionPane.ERROR_MESSAGE);
                }
           
        }else{
            JOptionPane.showMessageDialog(null,"Ha sido cancelada la actualizacion del Backup");
        }
    }

Aqui igualmente utilizo JFileChooser, pero para abrir el archivo, lo que me intriga es que incluso sale el mensaje "BaseActualizada", lo cual indica que ejecuta la instruccion de actualizar la base, pero al verificar no lo esta haciendo.

De verdad agradezco cualquier ayuda con este codigo. Doy gracias de antemano

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Por qué en Java?

Siento como que te estás complicando de manera innecesaria. Todo ese código en Java al final no es más que un envoltorio para los comandos de respaldar y restaurar mysql. Lo hiciste así para poder preguntar acerca de mysql en este sitio, o hay alguna razón por la que necesitas invocar esos programas desde Java?

Imagen de neko069

Yo me imagino que quiere

Yo me imagino que quiere hacer algo como lo que hace Hibernate, que, a partir de recursos que ya se tienen, generar el esquema de base de datos, pero sin tocar la consola de base de datos....

Quiero saber algo

Como restauro el backup en java?? ya tengo el archivo pero quiero que el sistema lo haga automaticamente cuando yo se lo diga con un siemple click en un boton.

Imagen de romeo

Backup y Restaurar Oracle desde Netbeans

Buena tu aportacion de java-mysql peo yo desearía saber como puedo generar una copia de seguridad de Oracle desde netbeans
si me pueden ayudar me lo podrian pasar a mi correo: ingromeo@hotmail.com
gracias...

Imagen de JUANCARLOS2511

BACK UP Y RESTORE

Hola ezamudio, yo estoy haciendo algo parecido y mi razon es que el usuario no se complique a la hora de hacer los back up. Nosotros lo sabemos hacer desde MySQL pero para el usuario seria mas facil hacerlo con un solo click que aprender a hacerlo desde linea de comandos. O que me aconsejas que haga para este caso.

Imagen de hugo_alvarez

ayuda

Alguien que me pueda ayudar a identificar lo que me está saliendo mal porque no puedo realizar la restauración de mi base de datos a mysql, el siguiente código lo utilizo en un botón para al darle clic aga la restauración pero no lo hace aquí está el código:

int resp;
resp=RealizarBackupMySQL.showOpenDialog(this);
if (resp==JFileChooser.APPROVE_OPTION) {
try{
String ubicacion= String.valueOf(RealizarBackupMySQL.getSelectedFile().toString().trim());
Process child = Runtime.getRuntime().exec("C:\\Program Files (x86)\\MySQL\\MySQL Server 5.0\\bin\\mysql --user=root --password=root --databases forrajera < " + ubicacion);
JOptionPane.showMessageDialog(null,"BaseActualizada","Verificar",JOptionPane.INFORMATION_MESSAGE);
}catch(Exception e){
JOptionPane.showMessageDialog(null, "Error no se actualizo la DB por el siguiente motivo: " + e.getMessage(), "Verificar",JOptionPane.ERROR_MESSAGE);
}
}else{
JOptionPane.showMessageDialog(null,"Ha sido cancelada la actualizacion del Backup");
}

Imagen de CuicaJavier

Mysql workbench

Es mas facil utilizar las herramientas de Mysql que estar haciendolo por codigo! Utiliza la herramienta Mysql workbench.

Imagen de hugo_alvarez

Yo sé hacerlo de manera

Yo sé hacerlo de manera manual pero quiero que el cliente lo haga solo presionando un botón donde ya nomás pueda seleccionar el archivo y hacer la restauración de la base de datos con el menor problema posible.

Imagen de CuicaJavier

Recien tengo el mismo problema!

Entiendo! gracias por aclararmelo, a mi también estos días me pidieron hacer la restauración de la base de datos al seleccionar el archivo, ojala puedan apoyar este problema que me será muy útil también. Gracias.

Imagen de hugo_alvarez

Oye de casualidad no has

Oye de casualidad no has calado el código a ver si te sirve lo que pasa que yo he buscado y en todas partes dice lo mismo así que es algo lo que me está fallando chécalo tú a ver si t funciona.

Imagen de CuicaJavier

Errores

Podrías publicar los errores que te salen. Gracias. Mañana los pruebo!

Imagen de hugo_alvarez

De hecho no me sale errores

De hecho no me sale errores supuestamente realiza a restauración pero al revisar en el administrador y no está la base de datos que se desea restaurar.

Imagen de neko069

@hugo_alvarez

Si estás usando el código que colocaste dos post arriba, en la parte del bloque catch, sustituye:

}catch(Exception e){
JOptionPane.showMessageDialog(null, "Error no se actualizo la DB por el siguiente motivo: " + e.getMessage(), "Verificar",JOptionPane.ERROR_MESSAGE);
}

Por:

}catch(Exception e){
    e.printStackTrace();
}

Sólo para asegurarte que tu código no se está tragando alguna excepción.

Imagen de hugo_alvarez

neko069

Muchas gracias por comentar pero al parecer el tri catch está funcionando bien no toma ninguna excepción de echo entra al mensaje de que la Base se a actualizado.

Imagen de JUANCARLOS2511

HOLA BUENAS NOCHES. He

HOLA BUENAS NOCHES.

He realizado el backup y la restauracion de la base de datos como aparece en el codigo arriba expuesto, pero al crear el .jar no los realiza, no ejecuta el comando mysqldump ni "Process child = Runtime.getRuntime().exec("C:\\Program Files (x86)\\MySQL\\MySQL Server 5.0\\bin\\mysql --user=root --password=root --databases forrajera < " + ubicacion);" Alguien conoce la razon de este error.

codigo de restaurar base de datos

una pregunta neko069 ya solucionaste el problema al restaurar la base de datos ?? tengo el mismo problema :S me podras dar el codigo xfavor

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">