crear backup mysql en java

Colapsar
X
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar todos
nuevos mensajes

  • crear backup mysql en java

    hola esque quiero realizar un backup de la base de datops con mysqldump pero no lo realiza por k ? como le puedo indicar a java donde esta el archivo mysqldump?


    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    backup("localhost","root","hola");
    }


    public void backup(String host, String user, String password){
    try
    {

    Process proc = Runtime.getRuntime().exec("mysqldump --op -u root -p hola bd < c:/backup.sql");
    //JOptionPane.showMessageDialog(null, "Si se pudo xD");
    }
    catch(Exception e){
    e.printStackTrace();
    JOptionPane.showMessageDialog(null, "No se pudo =(");
    }
    }

  • #2
    Re: crear backup mysql en java

    hola alphabravo veo que tienes problemas con la ejecucion del comando mysql...
    el problema esta que estas intentando ejecutar el comando mysql como que si estuvieras en el cmd y el Runtime.getRuntime().exec() lo que termite es llamar ejecutables segun donde se encuentre la ubicacion......

    asi que tu comando tendria que ser el siguiente haciendo referencia al comand
    (cmd)::


    Process proc= Runtime.getRuntime().exec("cmd /c mysql --password= [pass] --user=root dbName < " + ubicacion);

    donde <cmd /c> hace referencia al comand o shell de windows para que le mandes el comando y me parece una manera mas sencilla restaurar la base de datos de la forma q he puesto dado que le ingresas de una sola vez el password y tu usuario si la base no tiene password solo pon::

    cmd /c mysql --password= --user=root dbName < " + ubicacion);

    dbName significa el nombre de la base de datos y puedes generar una variable que t contenga la ubicacion para asi sacarla de un FileChooser....

    bueno cualquier cosa escribeme tu correo asi te podre pasar un frm que he hecho donde puedes generar el archivo backup y la actualizacion de la base....
    Luis_RG



    El Salvador
    San Salvador
    UFG

    Comentario


    • #3
      Re: crear backup mysql en java

      Estimado luis_rg:

      Me vas a permitir indicarte una de las normas fundamentales del foro.

      Todo lo que se trata en el foro, bien sean mensajes de respuesta, como ficheros con código o cualquier otro documento que ayude a lograr una posible solución a preguntas planteadas, debe hacerse en público (en el foro) y nunca mediante correos privados.

      La razón es muy sencilla: Si todos nos comunicamos en privado mediante e-mails....para que existe el foro ??

      Los correos electrónicos entre usuarios solamente se utilizarán por razones personales muy justificadas.

      Estoy convencido de que entenderás esta norma básica de funcionamiento.
      Un cordial saludo
      -Acalanto-

      Madrid - España

      Leer detalladamente las normas del foro es una buena forma de comenzar a participar en él. Te llevará unos pocos minutos y el colectivo de usuarios te lo agradecerá. <si no las has leído sigue este enlace>

      Comentario


      • #4
        Re: crear backup mysql en java

        Entendido..... no utilizar correo......
        bueno mil disculpas pero soy nuevo aclarando respuestas..... y en el foro....
        ademas que tienes toda la razon porque si me llevo tiempo, ver como iria el codigo, de la actualizacion de una db Mysql en java pero aqui pongo todo para que lo utilicen:::

        Creacion del backup de la db mysql en un archivo .sql:::


        private void btnGenerarActionPerformed(java.awt.event.ActionEve nt evt) {
        SimpleDateFormat dateformat = new SimpleDateFormat("ddMMyy");
        if(txtContenedor.getText().equalsIgnoreCase("")){
        JOptionPane.showMessageDialog(null, "Por favor elija la ubicación", "Verificar",JOptionPane.INFORMATION_MESSAGE);
        }else{
        try{
        Runtime runtime = Runtime.getRuntime();
        File backupFile = new File(String.valueOf(FileChooser.getCurrentDirectory()) + "\\nombreArchivo" + dateformat.format(calendario.getTime()) + ".sql");
        /*backupFile se utiliza para indicarle la ubicacion y nombre del archivo que contendra el backup con la extencion .sql*/

        FileWriter fw = new FileWriter(backupFile);
        /*objeto que escribira sobre el backup archivo*/

        Process child = runtime.exec("C:\\Archivos de programa\\MySQL\\MySQL Server 5.0\\bin\\mysqldump --opt --password= --user=root <nameDB>");
        /*Process es el que ejecuta el comando para buscar el mysqldump.exe*/
        InputStreamReader irs = new InputStreamReader(child.getInputStream());
        BufferedReader br = new BufferedReader(irs);
        /* se escribe sobre el archivo*/
        String line;
        while( (line=br.readLine()) != null ) {
        fw.write(line + "\n");
        }
        fw.close();
        irs.close();
        br.close();
        }catch(Exception e){
        e.printStackTrace();
        JOptionPane.showMessageDialog(null, "Error no se genero el archivo por el siguiente motivo: " + e.getMessage(), "Verificar",JOptionPane.ERROR_MESSAGE);
        }
        JOptionPane.showMessageDialog(null, "Archivo generado", "Verificar",JOptionPane.INFORMATION_MESSAGE);
        }
        }

        si observan veran que estoy utilizando un FileChooser para seleccionar la ubicacion donde se generara el archivo con el backup de la base....
        <nameDB> ---> es el nombre de la base de datos que desean crearle el backup
        nota::: Estoy utilizando mysql5.0 y en el objeto Process le doy la ubicacion del exe mysqldump si utilizan Mowes, Wos, PHPMyAdmin, etc tendran que buscar en el directorio donde se instalo los bin de mysql...

        Actualizacion de la base desde java::::::



        if(txtContenedor.getText().equalsIgnoreCase("")){
        JOptionPane.showMessageDialog(null, "Por favor elija la ubicación", "Verificar",JOptionPane.INFORMATION_MESSAGE);
        }else{
        try{
        String ubicacion= String.valueOf(FileChooser.getSelectedFile());
        /*Nuevamente fileChooser para indicarle donde esta el archivoBackUp*/
        Process child = Runtime.getRuntime().exec("cmd /c mysql --password= --user=root [NameDB] < " + ubicacion);

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

        }



        El codigo de la actualizacion es mas corto.....
        [NameDB] --> indica el nombre de la base de datos a actualizar
        el String que se ejecuta en el process es muy singular dado que lleva el comando inicial
        cmd /c ----> este lo que hace es llamar a la famosa ventanita negra jajajajjaj la shell o el comand para ingresarle los comandos que se quieran ejecutar......
        lo hice asi dado que de la otra forma no me funcionaba.... y de esta si....

        por lo tanto si en algun caso desean hacer un dir o ejecutar programas como calc de windows etc.... deben usar...
        Porcess proc = Runtime.getRuntime().exec("cmd /c " + ElComando);

        Bueno espero que le sirva de ayuda a las personas que se acerquen al foro y cualquier duda al corr....... no mentiras aqui las exponen...
        Última edición por luis_rg; 01-04-2009, 06:29 AM.
        Luis_RG



        El Salvador
        San Salvador
        UFG

        Comentario


        • #5
          Re: crear backup mysql en java

          hola a todos soy nuevo aqui.
          ya prove la parte de crear un backup y me funciona correctamente
          pero para montarlo no he podido por favor diganme como puedo montarlo por que de la forma que aparece no me funciona es que estoy utilizando phpmyadmin

          Comentario


          • #6
            Re: crear backup mysql en java

            Hola byrobles2009.....
            Bueno dejame decirte que a mi me funciono el codigo para hacer la actualización, osea montar el backUp de la DB, que yo lo utilizo para pasar la info de dos maquinas diferentes. Una cosa que realmente no me gusto o mas bien no funciona a perfeccio es que cuando selecciones la ubicacion, del archivo.sql que contiene el backup, Tiene que estar en un direcectorio de carpetas que cuyos nombres no contengan espacios........
            se escucha raro, bueno se lee raro, te lo explicare::
            cuando generes el archivo de backup.sql guardalo en el disco C:\ de preferencia dado que si los guardas en "mis documentos" mira la direccion a seguir
            "C:\documents_and_sentings\All_user\Administrador\Mis_documentos" ----> observa todos los espacios qu contiene la direccion, que te los he marcado con "_".......

            ahora bien no se porque se da ese problema y la verdad la solucion es bien sencilla......
            pon la ubicacion del archivo backup.sql en carpetas que no contengan espacios por ejemplo::

            "C:\BackUpMiBaseDatos\backup.sql"

            ahora bien prueba con eso y si te funciona vas a estar limitado a eso si no prueba.... prueba mi amigo a ver si lo puedes resolver....... y si no es ese el problema comenta que error te muestra en la terminal para ayudarte.......


            aaaaa otra cosa se me olvidaba. Revisa el archivo.sql a ver si te genera bien el backup si no tiene nada adentro entonces no lo genera...... o revisa para ver si entre todas esas instrucciones hay algunas de generacion de tablas e insercion de datos si lo tiene con los respectivos datos, entonces esta bien.....

            ajjajajaj una vez comienzo no paro pero para no estar comentando varias veces muestro una forma mas facil de generar el backup por comandos..... es mas rapido y eficiente.....


            String ubicacion = String.valueOf(FileChooser.getCurrentDirectory()) + "\\NameBackUp" + ".sql";
            Process child = Runtime.getRuntime().exec("cmd /c mysqldump --opt --password= --user=root DBName > " + ubicacion);

            esa pequeña instruccion dentro de un try-catch y listo hasta facil de aprender......

            Bueno espero que te sirva.....
            Última edición por luis_rg; 17-07-2009, 04:19 AM.
            Luis_RG



            El Salvador
            San Salvador
            UFG

            Comentario


            • #7
              Re: crear backup mysql en java

              hola el motivo de mi llegada a este foro es porque estuve buscando por todos lados como hacer un backup de la base de datos de mysql en java usando netbeans.
              Al fin en este foro pude encontrar algo, estuve probando el codigo pero no me funciona la clase FileChoosser y aunque le saque el filechooser y le puse el directorio donde quiero guardarlo no me funciona bien el backup.

              Cuando genero el backup me crea un txt con el nombre que le doy, pero no logro restaurar la BD. el archivo que se genera tiene 1K pero en el texto no hace la carga de los datos que ya contienen las tablas.

              Bueno espero se entienda algo de lo que escribi, si alguien puede ayudarme seria de gran ayuda. Muchas Gracias.

              el Checho.

              Comentario


              • #8
                Re: crear backup mysql en java

                Originalmente escrito por checho2009 Ver mensaje
                hola el motivo de mi llegada a este foro es porque estuve buscando por todos lados como hacer un backup de la base de datos de mysql en java usando netbeans.
                Al fin en este foro pude encontrar algo, estuve probando el codigo pero no me funciona la clase FileChoosser y aunque le saque el filechooser y le puse el directorio donde quiero guardarlo no me funciona bien el backup.

                Cuando genero el backup me crea un txt con el nombre que le doy, pero no logro restaurar la BD. el archivo que se genera tiene 1K pero en el texto no hace la carga de los datos que ya contienen las tablas.

                Bueno espero se entienda algo de lo que escribi, si alguien puede ayudarme seria de gran ayuda. Muchas Gracias.

                el Checho.


                Checho fijate bien como se llama el file choosser dado que ese puede ser un problema que no agarre el archivo a generar el file choosser....

                pero segun entiendo no te genera el backup tambien....

                si gustas puedes poner un poco del codigo que utilizas o que error da en terminal para poder ayudarte.....
                dado que yo lo utilice en un sistema y si funciona......

                aaa otra cosa no se si te fijaste que hay un problema al colocar las direcciones de los archivos en carpetas con espacios de nombres asi como Archivo_de_programas.........


                intenta colocar el back up en el C:/

                pero igual prueba y si puedes coloca el codigo en el foro para ayudarte......
                Luis_RG



                El Salvador
                San Salvador
                UFG

                Comentario


                • #9
                  Re: crear backup mysql en java

                  como te va muchas gracias por la ayuda, al final logre solucionar el problema, hago el backup sin usar el fileChoosser porque todavia no se bien como se usa el chooser, por ahora safo de la facu sin el choosser, pero me tengo que poner a ver bien como se maneja.

                  Bueno muchas gracias, ya estare preguntando nuevamente cuando tenga dudas, o respondiendo dudas de otros.

                  Comentario


                  • #10
                    Re: crear backup mysql en java

                    Originalmente escrito por checho2009 Ver mensaje
                    como te va muchas gracias por la ayuda, al final logre solucionar el problema, hago el backup sin usar el fileChoosser porque todavia no se bien como se usa el chooser, por ahora safo de la facu sin el choosser, pero me tengo que poner a ver bien como se maneja.

                    Bueno muchas gracias, ya estare preguntando nuevamente cuando tenga dudas, o respondiendo dudas de otros.

                    ok Me alegra que te sirva.....


                    si quieres aprender sobre Jfilechooser.... aqui hay un tuto bien sencillo que te explica lo necesario......

                    Java en castellano. Swing y JFC (Java Foundation Classes) java jsp

                    Espero que te sirva....

                    Cuidate...
                    Luis_RG



                    El Salvador
                    San Salvador
                    UFG

                    Comentario


                    • #11
                      Re: crear backup mysql en java

                      Originalmente escrito por luis_rg Ver mensaje
                      Entendido..... no utilizar correo......
                      bueno mil disculpas pero soy nuevo aclarando respuestas..... y en el foro....
                      ademas que tienes toda la razon porque si me llevo tiempo, ver como iria el codigo, de la actualizacion de una db Mysql en java pero aqui pongo todo para que lo utilicen:::

                      Creacion del backup de la db mysql en un archivo .sql:::


                      private void btnGenerarActionPerformed(java.awt.event.ActionEve nt evt) {
                      SimpleDateFormat dateformat = new SimpleDateFormat("ddMMyy");
                      if(txtContenedor.getText().equalsIgnoreCase("")){
                      JOptionPane.showMessageDialog(null, "Por favor elija la ubicación", "Verificar",JOptionPane.INFORMATION_MESSAGE);
                      }else{
                      try{
                      Runtime runtime = Runtime.getRuntime();
                      File backupFile = new File(String.valueOf(FileChooser.getCurrentDirectory()) + "\\nombreArchivo" + dateformat.format(calendario.getTime()) + ".sql");
                      /*backupFile se utiliza para indicarle la ubicacion y nombre del archivo que contendra el backup con la extencion .sql*/

                      FileWriter fw = new FileWriter(backupFile);
                      /*objeto que escribira sobre el backup archivo*/

                      Process child = runtime.exec("C:\\Archivos de programa\\MySQL\\MySQL Server 5.0\\bin\\mysqldump --opt --password= --user=root <nameDB>");
                      /*Process es el que ejecuta el comando para buscar el mysqldump.exe*/
                      InputStreamReader irs = new InputStreamReader(child.getInputStream());
                      BufferedReader br = new BufferedReader(irs);
                      /* se escribe sobre el archivo*/
                      String line;
                      while( (line=br.readLine()) != null ) {
                      fw.write(line + "\n");
                      }
                      fw.close();
                      irs.close();
                      br.close();
                      }catch(Exception e){
                      e.printStackTrace();
                      JOptionPane.showMessageDialog(null, "Error no se genero el archivo por el siguiente motivo: " + e.getMessage(), "Verificar",JOptionPane.ERROR_MESSAGE);
                      }
                      JOptionPane.showMessageDialog(null, "Archivo generado", "Verificar",JOptionPane.INFORMATION_MESSAGE);
                      }
                      }

                      si observan veran que estoy utilizando un FileChooser para seleccionar la ubicacion donde se generara el archivo con el backup de la base....
                      <nameDB> ---> es el nombre de la base de datos que desean crearle el backup
                      nota::: Estoy utilizando mysql5.0 y en el objeto Process le doy la ubicacion del exe mysqldump si utilizan Mowes, Wos, PHPMyAdmin, etc tendran que buscar en el directorio donde se instalo los bin de mysql...

                      Actualizacion de la base desde java::::::



                      if(txtContenedor.getText().equalsIgnoreCase("")){
                      JOptionPane.showMessageDialog(null, "Por favor elija la ubicación", "Verificar",JOptionPane.INFORMATION_MESSAGE);
                      }else{
                      try{
                      String ubicacion= String.valueOf(FileChooser.getSelectedFile());
                      /*Nuevamente fileChooser para indicarle donde esta el archivoBackUp*/
                      Process child = Runtime.getRuntime().exec("cmd /c mysql --password= --user=root [NameDB] < " + ubicacion);

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

                      }



                      El codigo de la actualizacion es mas corto.....
                      [NameDB] --> indica el nombre de la base de datos a actualizar
                      el String que se ejecuta en el process es muy singular dado que lleva el comando inicial
                      cmd /c ----> este lo que hace es llamar a la famosa ventanita negra jajajajjaj la shell o el comand para ingresarle los comandos que se quieran ejecutar......
                      lo hice asi dado que de la otra forma no me funcionaba.... y de esta si....

                      por lo tanto si en algun caso desean hacer un dir o ejecutar programas como calc de windows etc.... deben usar...
                      Porcess proc = Runtime.getRuntime().exec("cmd /c " + ElComando);

                      Bueno espero que le sirva de ayuda a las personas que se acerquen al foro y cualquier duda al corr....... no mentiras aqui las exponen...









                      Holaaaaaaaaa......... me he estado guiando con tu codigo, necesito hacer respaldo de mi base de datos para un sistema que estoy realizandoo pero no me sale, solo me crea el archivo txt vacio!........ u_u le hice unos cambios pero no me funciona ayuda.... pleaseeee este es mi codigo:

                      try {

                      Process child = Runtime.getRuntime().exec("cmd /c mysqldump --opt --password=anabel --user=root guarderia > " + "d:\\sqlDump.sql");
                      FileWriter fw = new FileWriter("d:\\sqlDump.sql");
                      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();


                      } catch (IOException ex) {
                      Logger.getLogger(menu.class.getName()).log(Level.S EVERE, null, ex);
                      }

                      Comentario


                      • #12
                        Re: crear backup mysql en java

                        Originalmente escrito por luis_rg Ver mensaje
                        Entendido..... no utilizar correo......
                        bueno mil disculpas pero soy nuevo aclarando respuestas..... y en el foro....
                        ademas que tienes toda la razon porque si me llevo tiempo, ver como iria el codigo, de la actualizacion de una db Mysql en java pero aqui pongo todo para que lo utilicen:::

                        Creacion del backup de la db mysql en un archivo .sql:::


                        private void btnGenerarActionPerformed(java.awt.event.ActionEve nt evt) {
                        SimpleDateFormat dateformat = new SimpleDateFormat("ddMMyy");
                        if(txtContenedor.getText().equalsIgnoreCase("")){
                        JOptionPane.showMessageDialog(null, "Por favor elija la ubicación", "Verificar",JOptionPane.INFORMATION_MESSAGE);
                        }else{
                        try{
                        Runtime runtime = Runtime.getRuntime();
                        File backupFile = new File(String.valueOf(FileChooser.getCurrentDirectory()) + "\\nombreArchivo" + dateformat.format(calendario.getTime()) + ".sql");
                        /*backupFile se utiliza para indicarle la ubicacion y nombre del archivo que contendra el backup con la extencion .sql*/

                        FileWriter fw = new FileWriter(backupFile);
                        /*objeto que escribira sobre el backup archivo*/

                        Process child = runtime.exec("C:\\Archivos de programa\\MySQL\\MySQL Server 5.0\\bin\\mysqldump --opt --password= --user=root <nameDB>");
                        /*Process es el que ejecuta el comando para buscar el mysqldump.exe*/
                        InputStreamReader irs = new InputStreamReader(child.getInputStream());
                        BufferedReader br = new BufferedReader(irs);
                        /* se escribe sobre el archivo*/
                        String line;
                        while( (line=br.readLine()) != null ) {
                        fw.write(line + "\n");
                        }
                        fw.close();
                        irs.close();
                        br.close();
                        }catch(Exception e){
                        e.printStackTrace();
                        JOptionPane.showMessageDialog(null, "Error no se genero el archivo por el siguiente motivo: " + e.getMessage(), "Verificar",JOptionPane.ERROR_MESSAGE);
                        }
                        JOptionPane.showMessageDialog(null, "Archivo generado", "Verificar",JOptionPane.INFORMATION_MESSAGE);
                        }
                        }

                        si observan veran que estoy utilizando un FileChooser para seleccionar la ubicacion donde se generara el archivo con el backup de la base....
                        <nameDB> ---> es el nombre de la base de datos que desean crearle el backup
                        nota::: Estoy utilizando mysql5.0 y en el objeto Process le doy la ubicacion del exe mysqldump si utilizan Mowes, Wos, PHPMyAdmin, etc tendran que buscar en el directorio donde se instalo los bin de mysql...

                        Actualizacion de la base desde java::::::



                        if(txtContenedor.getText().equalsIgnoreCase("")){
                        JOptionPane.showMessageDialog(null, "Por favor elija la ubicación", "Verificar",JOptionPane.INFORMATION_MESSAGE);
                        }else{
                        try{
                        String ubicacion= String.valueOf(FileChooser.getSelectedFile());
                        /*Nuevamente fileChooser para indicarle donde esta el archivoBackUp*/
                        Process child = Runtime.getRuntime().exec("cmd /c mysql --password= --user=root [NameDB] < " + ubicacion);

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

                        }



                        El codigo de la actualizacion es mas corto.....
                        [NameDB] --> indica el nombre de la base de datos a actualizar
                        el String que se ejecuta en el process es muy singular dado que lleva el comando inicial
                        cmd /c ----> este lo que hace es llamar a la famosa ventanita negra jajajajjaj la shell o el comand para ingresarle los comandos que se quieran ejecutar......
                        lo hice asi dado que de la otra forma no me funcionaba.... y de esta si....

                        por lo tanto si en algun caso desean hacer un dir o ejecutar programas como calc de windows etc.... deben usar...
                        Porcess proc = Runtime.getRuntime().exec("cmd /c " + ElComando);

                        Bueno espero que le sirva de ayuda a las personas que se acerquen al foro y cualquier duda al corr....... no mentiras aqui las exponen...
                        hola amigo luis_rg veo que la solucion que pones ps esta bien... varios dicen que si les queda bien... pero ps no seria mucha molestia si te pido de favor que envies tu ejemplo ami correo? se que no debo pedir cosas al correo etc.. pero weno disculpenme...

                        o podrias poner aqui el diseño de la ventana ke usas para hacer el backup... y dime tambien funciona para restaurar????

                        se que son muchas cosas las que pido pero ps la verdad es que ps llevo casi 4dias desvelado y mi cerebro ya no carbura bien...

                        veo que pones ahi txtcontenedor y cosas asi tons como ke no le entiendo muy bien.. weno no me carbura no veo claro jeje porfa podrias poner el ejmplo de como sta diseñada la ventana o mejor pasame el ejmplo.. porfa...

                        eske tengo ke entregar un ejemplo de como respaldar y como hacer la restauracion dela bd desde una ventana y es para el lunes... es derecho a examen final
                        (Ò''Ó) ChS (Ò''Ó)

                        Comentario


                        • #13
                          Re: crear backup mysql en java

                          Originalmente escrito por luis_rg Ver mensaje
                          Entendido..... no utilizar correo......
                          bueno mil disculpas pero soy nuevo aclarando respuestas..... y en el foro....
                          ademas que tienes toda la razon porque si me llevo tiempo, ver como iria el codigo, de la actualizacion de una db Mysql en java pero aqui pongo todo para que lo utilicen:::

                          Creacion del backup de la db mysql en un archivo .sql:::


                          private void btnGenerarActionPerformed(java.awt.event.ActionEve nt evt) {
                          SimpleDateFormat dateformat = new SimpleDateFormat("ddMMyy");
                          if(txtContenedor.getText().equalsIgnoreCase("")){
                          JOptionPane.showMessageDialog(null, "Por favor elija la ubicación", "Verificar",JOptionPane.INFORMATION_MESSAGE);
                          }else{
                          try{
                          Runtime runtime = Runtime.getRuntime();
                          File backupFile = new File(String.valueOf(FileChooser.getCurrentDirectory()) + "\\nombreArchivo" + dateformat.format(calendario.getTime()) + ".sql");
                          /*backupFile se utiliza para indicarle la ubicacion y nombre del archivo que contendra el backup con la extencion .sql*/

                          FileWriter fw = new FileWriter(backupFile);
                          /*objeto que escribira sobre el backup archivo*/

                          Process child = runtime.exec("C:\\Archivos de programa\\MySQL\\MySQL Server 5.0\\bin\\mysqldump --opt --password= --user=root <nameDB>");
                          /*Process es el que ejecuta el comando para buscar el mysqldump.exe*/
                          InputStreamReader irs = new InputStreamReader(child.getInputStream());
                          BufferedReader br = new BufferedReader(irs);
                          /* se escribe sobre el archivo*/
                          String line;
                          while( (line=br.readLine()) != null ) {
                          fw.write(line + "\n");
                          }
                          fw.close();
                          irs.close();
                          br.close();
                          }catch(Exception e){
                          e.printStackTrace();
                          JOptionPane.showMessageDialog(null, "Error no se genero el archivo por el siguiente motivo: " + e.getMessage(), "Verificar",JOptionPane.ERROR_MESSAGE);
                          }
                          JOptionPane.showMessageDialog(null, "Archivo generado", "Verificar",JOptionPane.INFORMATION_MESSAGE);
                          }
                          }

                          si observan veran que estoy utilizando un FileChooser para seleccionar la ubicacion donde se generara el archivo con el backup de la base....
                          <nameDB> ---> es el nombre de la base de datos que desean crearle el backup
                          nota::: Estoy utilizando mysql5.0 y en el objeto Process le doy la ubicacion del exe mysqldump si utilizan Mowes, Wos, PHPMyAdmin, etc tendran que buscar en el directorio donde se instalo los bin de mysql...

                          Actualizacion de la base desde java::::::



                          if(txtContenedor.getText().equalsIgnoreCase("")){
                          JOptionPane.showMessageDialog(null, "Por favor elija la ubicación", "Verificar",JOptionPane.INFORMATION_MESSAGE);
                          }else{
                          try{
                          String ubicacion= String.valueOf(FileChooser.getSelectedFile());
                          /*Nuevamente fileChooser para indicarle donde esta el archivoBackUp*/
                          Process child = Runtime.getRuntime().exec("cmd /c mysql --password= --user=root [NameDB] < " + ubicacion);

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

                          }



                          El codigo de la actualizacion es mas corto.....
                          [NameDB] --> indica el nombre de la base de datos a actualizar
                          el String que se ejecuta en el process es muy singular dado que lleva el comando inicial
                          cmd /c ----> este lo que hace es llamar a la famosa ventanita negra jajajajjaj la shell o el comand para ingresarle los comandos que se quieran ejecutar......
                          lo hice asi dado que de la otra forma no me funcionaba.... y de esta si....

                          por lo tanto si en algun caso desean hacer un dir o ejecutar programas como calc de windows etc.... deben usar...
                          Porcess proc = Runtime.getRuntime().exec("cmd /c " + ElComando);

                          Bueno espero que le sirva de ayuda a las personas que se acerquen al foro y cualquier duda al corr....... no mentiras aqui las exponen...
                          __________________________________________________ _____________

                          Hola luis_rg.
                          Soy nuevo en el foro,
                          Oye quisiera hacer lo mismo pero a Sql Server 2008, que por medio de una apliacion de Java Eclipse yo pueda respaldar y restaurar informacion de una base de datos, me podrias ayudar.

                          Comentario


                          • #14
                            Re: crear backup mysql en java

                            Habia buscado una forma de generar y restaurar backup de mysq dado que la forma que yo usaba anteriormente me distorcionaba los acentos en las palabrasl!! me ha servido de maravilla MUCHAS GRACIAS LUIS_RG!!!

                            Comentario

                            Trabajando...
                            X