通过java代码备份恢复mysql详解编程语言

import java.io.BufferedReader; 
import java.io.File; 
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 class Test { 
    public static void main(String[] args) throws IOException{ 
        backup("d:////d.sql");http://www.huiyi8.com/jiaoben/ 
        recover("d:////d.sql"); 
    } 
    public static void backup(String path) throws IOException{ 
        Runtime runtime = Runtime.getRuntime(); 
        //-u后面是用户名,-p是密码-p后面最好不要有空格,-family是数据库的名字 
        Process process = runtime.exec("mysqldump -u root -p123456 family"); 
        InputStream inputStream = process.getInputStream();//得到输入流,写成.sql文件 
        InputStreamReader reader = new InputStreamReader(inputStream); 
        BufferedReader br = new BufferedReader(reader); 
        String s = null; 
        StringBuffer sb = new StringBuffer(); 
        while((s = br.readLine()) != null){ 
            sb.append(s+"//r//n"); 
        } 
        s = sb.toString(); 
        System.out.println(s); 
        File file = new File(path); 
        file.getParentFile().mkdirs(); 
        FileOutputStream fileOutputStream = new FileOutputStream(file); 
        fileOutputStream.write(s.getBytes()); 
        fileOutputStream.close(); 
        br.close(); 
        reader.close(); 
        inputStream.close(); 
    } 
    public static void recover(String path) throws IOException{ 
        Runtime runtime = Runtime.getRuntime(); 
        //-u后面是用户名,-p是密码-p后面最好不要有空格,-family是数据库的名字,--default-character-set=utf8,这句话一定的加 
        //我就是因为这句话没加导致程序运行成功,但是数据库里面的内容还是以前的内容,最好写上完成的sql放到cmd中一运行才知道报错了 
        //错误信息: 
        //mysql: Character set 'utf-8' is not a compiled character set and is not specified in the ' 
        //C://Program Files//MySQL//MySQL Server 5.5//share//charsets//Index.xml' file ERROR 2019 (HY000): Can't 
        // initialize character set utf-8 (path: C://Program Files//MySQL//MySQL Server 5.5//share//charsets//), 
        //又是讨人厌的编码问题,在恢复的时候设置一下默认的编码就可以了。 
        Process process = runtime.exec("mysql -u root -p123456 --default-character-set=utf8 family"); 
        OutputStream outputStream = process.getOutputStream(); 
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path))); 
        String str = null; 
        StringBuffer sb = new StringBuffer(); 
        while((str = br.readLine()) != null){ 
            sb.append(str+"//r//n"); 
        } 
        str = sb.toString(); 
        System.out.println(str); 
        OutputStreamWriter writer = new OutputStreamWriter(outputStream,"utf-8"); 
        writer.write(str); 
        writer.flush(); 
        outputStream.close(); 
        br.close(); 
        writer.close(); 
    } 
} 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/10806.html

(0)
上一篇 2021年7月19日 10:29
下一篇 2021年7月19日 10:29

相关推荐

发表回复

登录后才能评论