Restaurar una base de datos de mysql en java

Tengo problemas al tratar de restaurar un respaldo de una base de datos en java... Tengo el código:

public boolean importar(String ruta){
    boolean bnd=false;
    String sentencia = rutaMySQL+"mysql -u "+user+" -p"+pass+" "+bd+" < "+ruta;
    Runtime rt = Runtime.getRuntime();
    try {
        System.out.println(sentencia);
        rt.exec(sentencia);
        bnd = true;
    } catch (IOException ex) {
        Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE, null, ex);
    }
    return bnd;
}

Esto не меня funciona, СИ меня devuelve el valor "истинные" pero не понимают la restauración. Коммандос Lo raro es que el mismo я funciona perfectamente desde la CMD... Alguien sabe el error?

1
задан 15.01.2017, 18:07
0 ответов

rt.exec (решение); помни, что, когда это делает всю информацию, он остается в памяти, именно поэтому твой backup тебе не кажется отраженным.

У меня была проблема, сходная с этим, объяснение ты переместило линию из-за линии для того, чтобы ты понял, как оно функционирует.

/*Este metodo recibira los siguientes parámetros.
 * @param host ruta de tu mysql
 * @param puert numero de puerto
 * @param  usuar
 * @param password
 * @param ruta aquí va la ruta donde deseas guardar tu backup
 * @param BD nombre de la base de datos
 */
public boolean importar(String host, String puert, String usuar, String password,String ruta,String BD){
 boolean ok=false;
    try{       
        //sentencia para crear el BackUp
         Process run = Runtime.getRuntime().exec(
        "cmd /c mysqldump --host=" + host + " --port=" + puert +
        " --user=" + usuar + " --password=" + password +
        " --complete-insert --extended-insert" +
        " " + ""+BD+"");
        //se guarda en memoria el backup
        InputStream in = run.getInputStream();
        //inicializamos para poder las lineas del backup
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        //para guardar los datos como string
        StringBuffer temp = new StringBuffer();
        int count;
        //hacemos una arreglo con una longitud apoximada de caracteres
        char[] cbuf = new char[10485760];
        //Empezamos a leer las líneas obtenidas
        while ((count = br.read(cbuf, 0, BUFFER)) != -1){
            //anexamos a nuestro buffer de string la línea leida
            //se agrega el arreglo obtenido y la longitud de este
            temp.append(cbuf, 0, count);
        }
        //cerramos los buffers
        br.close();
        in.close();        
        /* se crea y escribe el archivo SQL anexandole la ruta específica*/
        Archivo = new FileWriter(ruta);
        //para poder escribir sobre un fichero usaremos las clase PrintWriter
        PrintWriter pw = new PrintWriter(Archivo);
        //escribimos el fichero añadiendo salto de línea                                                    
        pw.println(temp.toString());  
        ok=true;
   }
    catch (Exception ex){
            ex.printStackTrace();
    } finally {
       try {           
         if (null != Archivo)
             Archivo.close();
       } catch (Exception e2) {
           e2.printStackTrace();
       }
    }   
    return ok; 
 }  
1
ответ дан 03.12.2019, 17:41
  • 1
    Probaré твой có я говорю большое спасибо из-за помощи и время! –  20.01.2017, 05:58