저번 시간에 테이블 백업을 했으니 복구를 해봐야겠죠!

 Java에서 MySQL테이블 백업 하기 : http://forum.falinux.com/zbxe/?document_srl=562793

 

이번 시간에는 Java에서 MySQL테이블 복구 하는걸 한번 해보겠습니다.

MySQL 복구 명령어는 아래와 같습니다.

C:/>mysqldump --user=유저아이디 --password=패스워드 데이터베이스명 테이블명 < 파일명

 

위에 있는 명령어를 Java에서 실행시켜 테이블 복원하는 샘플소스를 만들어 보겠습니다.

import java.util.Scanner;


public class JavaMySqlImport {

 private static String ID = "falinux";
 private static String PW = "falinux";
 private static String DB_NAME = "falinux";
 private static String FILE_PATH = "C://Temp//";

 public static void main(String[] args) {
     // 키보드로부터 문자열 입력받기
     Scanner sc = new Scanner(System.in);
     String fileName = "";
     while ("".equals(fileName)) {
      System.out.print("파일명을 입력하세요 : ");
      fileName = sc.nextLine();
  }
     System.out.println(fileName);

  // 파일 실행
  dbImpExec(makeExeCmdStr(FILE_PATH+fileName));
  
 }

 /**
  * 실행할 명령어 만들기
  * @param fileName
  * @return
  */
 private static String makeExeCmdStr(String fileName) {
  // TODO Auto-generated method stub
  StringBuffer exeuteCmd = new StringBuffer();
  exeuteCmd.append("mysql ");
  exeuteCmd.append("--user=");
  exeuteCmd.append(ID);
  exeuteCmd.append(" --password=");
  exeuteCmd.append(PW);
  exeuteCmd.append(" ");
  exeuteCmd.append(DB_NAME);
  exeuteCmd.append(" < ");
  exeuteCmd.append(fileName);
  
  System.out.println(exeuteCmd.toString());
  
  return exeuteCmd.toString();
 }

 /**
  * 데이터 Import
  * @param cmdStr
  */
 public static void dbImpExec(String cmdStr) {

  // 데이터 import
  String cmd[] = {"cmd.exe", "/c", cmdStr};
  try {
   Runtime run = Runtime.getRuntime();
   run.exec(cmd);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

여기에서 중요한 포인트는 커맨드명령어(cmd.exe)에 옵션 "/c"를 붙이는겁니다.

만약, 이 옵션이 없으면 제대로 실행 되질 않습니다. 빠뜨리지 마시고 꼭 넣어주세요.

위에 샘플은 윈도우에서의 샘플입니다.

리눅스에서도 비슷할꺼라 생각은 하는데..... 나중에 해보고 올려놓겠습니다.

감사합니다.



 [추가] 2011.12.24

Java에서 MySQL 백업 및 복구하기(window/linux)