다음과 같이 코드 코드를 복사합니다 .
import java.io.BufferedReader;
java.io.파일 가져오기;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
공개 클래스 테스트 {
public static void main(String[] args)에서 IOException이 발생합니다.
백업("d:////d.sql");
복구("d:////d.sql");
}
공개 정적 무효 백업(문자열 경로)에서 IOException이 발생합니다.
런타임 런타임 = Runtime.getRuntime();
//-u 뒤에는 사용자 이름이 오고, -p는 비밀번호입니다. -p 뒤에 공백이 없는 것이 가장 좋으며, -family는 데이터베이스 이름입니다.
프로세스 프로세스 = Runtime.exec("mysqldump -u root -p123456 family");
InputStream inputStream = process.getInputStream();//입력 스트림을 가져와서 .sql 파일로 작성합니다.
InputStreamReader 리더 = 새로운 InputStreamReader(inputStream);
BufferedReader br = new BufferedReader(reader);
문자열 s = null;
StringBuffer sb = new StringBuffer();
while((s = br.readLine()) != null){
sb.append(s+"//r//n");
}
s = sb.toString();
System.out.println(s);
파일 파일 = 새 파일(경로);
file.getParentFile().mkdirs();
FileOutputStream fileOutputStream = 새로운 FileOutputStream(파일);
fileOutputStream.write(s.getBytes());
fileOutputStream.close();
br.닫기();
reader.close();
inputStream.close();
}
공개 정적 무효 복구(문자열 경로)에서 IOException이 발생합니다.
런타임 런타임 = Runtime.getRuntime();
//-u 뒤에는 사용자 이름이 오고, -p는 비밀번호입니다. -p 뒤에 공백이 없는 것이 가장 좋습니다. -family는 데이터베이스 이름이고, --default-character-set=utf8입니다. 이 문장은 다음과 같아야 합니다. 추가되다
//이 문장을 추가하지 않았기 때문에 프로그램이 성공적으로 실행되었지만 데이터베이스의 내용은 여전히 이전 내용입니다. 완성된 SQL을 작성하고 cmd에 넣어서 실행해 보는 것이 가장 좋습니다. 오류가 보고됩니다.
//오류 메시지:
//mysql: 문자 세트 'utf-8'은 컴파일된 문자 세트가 아니며 '
//C://Program Files//MySQL//MySQL Server 5.5//share//charsets//Index.xml' 파일 오류 2019(HY000): 불가능
// 문자 세트 utf-8 초기화(경로: C://Program Files//MySQL//MySQL Server 5.5//share//charsets//),
//또 다른 성가신 인코딩 문제입니다. 복원할 때 기본 인코딩을 설정하세요.
프로세스 프로세스 = Runtime.exec("mysql -u root -p123456 --default-character-set=utf8 family");
OutputStream 출력스트림 = process.getOutputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
문자열 str = null;
StringBuffer sb = new StringBuffer();
while((str = br.readLine()) != null){
sb.append(str+"//r//n");
}
str = sb.toString();
System.out.println(str);
OutputStreamWriter 작가 = 새로운 OutputStreamWriter(outputStream,"utf-8");
작가.쓰기(str);
작가.플러시();
출력스트림.닫기();
br.닫기();
작가.닫기();
}
}