2013-01-24 4 views
0

Я беру резервную копию базы данных, но я не могу восстановить тот же файл резервной копии. Вот резервный код.Я хочу восстановить базу данных

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.zip.ZipEntry; 
import java.util.zip.ZipOutputStream; 

import javax.swing.JDialog; 
import javax.swing.JFileChooser; 

class Backupsql extends JDialog { 

    public boolean backupDB(String dbUser, String dbPass, String dbName) { 
     String sourcePath = null; 
     boolean result = false; 
     JFileChooser fc = new JFileChooser(); 
     int i = fc.showSaveDialog(Backupsql.this); 
     File file = fc.getSelectedFile(); 
     sourcePath = file.getPath(); 
     String filename = file.getName(); 
     sourcePath = sourcePath + ".sql"; 

     String executeCmd = 
      "C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\mysqldump -u " 
      + dbUser + " -p" + dbPass + " " + dbName + " -r " + sourcePath; 

     Process runtimeProcess; 
     try { 
      runtimeProcess = Runtime.getRuntime().exec(executeCmd); 
      int processComplete = runtimeProcess.waitFor(); 
      if (processComplete == 0) { 
       System.out.println("Backup created successfully"); 
       compressFile(sourcePath); 
       result = true; 
      } else { 
       System.out.println("Could not create the backup"); 
      } 
     } catch (Exception e) { 
      // TODO: handle exception 
      System.out.println("error" + e); 
     } 
     return result; 
    } 

    public static void compressFile(String srcFile) { 
     byte[] buffer = new byte[1024]; 
     try { 
      String destPath = srcFile.replace(".sql", ".zip"); 
      FileOutputStream fos = new FileOutputStream(destPath); 
      ZipOutputStream zos = new ZipOutputStream(fos); 
      ZipEntry ze = new ZipEntry(srcFile); 
      zos.putNextEntry(ze); 
      FileInputStream in = new FileInputStream(srcFile); 

      int len; 
      while ((len = in.read(buffer)) > 0) { 
       zos.write(buffer, 0, len); 
      } 
      in.close(); 
      zos.closeEntry(); 
      zos.close(); 
      System.out.println("Done"); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 

Это команда восстановления, которую я использую.

String[] executeCmd = new String[]{ 
    "C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin\\mysql.exe", "--user=" 
    + user, "--password=" + password, "-e", " source " + Unzippath}; 

Является ли мой код правильным? Могу ли я получить некоторые предложения?

+2

Что вы подразумеваете под словом "not able"? Какие ошибки вы получаете? Можно ли восстановить резервную копию вручную (т. Е. Не использовать приложение Java)? –

+0

Да, я могу восстановить резервную копию вручную – VVV

+0

означает, что я сделал код резервной копии Java, а также код восстановления Java, но оба кода не работают для того же файла. i m не удалось восстановить файл резервной копии java с помощью кода восстановления Java – VVV

ответ

1

Загляните в MySQL Backup/Restore. Следующий SQL может быть просто выполнен с JDBC и является более общим. It is также предназначенный для обработки полный резервные копии.

LOAD DATA INFILE '...' 
Смежные вопросы