mysql的数据库的备份与恢复

来源:互联网 发布:java 换行符替换 编辑:程序博客网 时间:2024/05/16 15:55
package com.shxt.fsc.db.base;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;/** * @ClassName: DBBeiFen * @date 2015-11-22 下午03:33:06 * @description 进行mysql 数据库的备份和恢复的操作 */public class DBBeiFen {    /**     * 数据库的用户名     */    static String name = "root";    /**     * 数据库的密码     */    static String password = "root";    /**     * 数据库的名     */    String dataName = "";    /**     * 放在的目录在哪     */    String path = "";    /**     *      * 通过对mysql的指令 进行对数据库的备份     * 这里面有几个参数需要注意的     * name,password,dataName都是数据库 名字 密码 数据库名     * path是备份的目录的路径     * @time:2015-11-22 下午03:34:20     */    public void Benfen() {        InputStream in = null;        InputStreamReader reader = null;         BufferedReader br = null;        FileOutputStream fout = null;        OutputStreamWriter write = null;        try {            Runtime rt = Runtime.getRuntime();            // 这是在控制台写入的语句            String cmd = "mysqldump -h localhost -u" + name + " -p"                    + password +" "+dataName;            // 进行执行            Process pross = rt.exec(cmd);            // 将这个数据进行导出            in = pross.getInputStream();            // 进行转码            reader = new InputStreamReader(in, "utf-8");            //读入的String            String inStr;            // 建立一个SringBuffer进行拼接的作用 提高效率            StringBuffer sb = new StringBuffer();            // 最有进行接收的值            String outStr;            // 在进行套用一个管子            br = new BufferedReader(reader);            // 将cmd中的数据进行去读和拼接            while ((inStr = br.readLine()) != null) {                sb.append(inStr + "\r\n");            }            //拼接成功            outStr = sb.toString();            //文件名日期的时候的命名            SimpleDateFormat format = new SimpleDateFormat(                    "yyyy.MM.dd hh小时mm分ss秒");            String date = format.format(new Date());            File file = new File(path + date + ".sql");            // 导出的地方            fout = new FileOutputStream(file);            // 继续的进行            write = new OutputStreamWriter(fout, "utf-8");            //进行写入            write.write(outStr);            write.flush();        } catch (IOException e) {            e.printStackTrace();        }finally{                //进行关闭流的对象                try {                    if(in != null){                        in.close();                    }                    if( reader != null){                        reader.close();                    }                    if(br != null){                        br.close();                    }                    if(fout != null){                        fout.close();                    }                    if(write != null){                        write.close();                    }                } catch (IOException e) {                    e.printStackTrace();                }        }    }    /**     *      * 进行查看文件夹中备份的文件     * 然后通过选择进行恢复数据库     * 传入的url 是文件夹的路径     * @param url     * @return List     */    public List<String> query(){        List<String> list = new ArrayList();        //建立一个File        File file = new File(path);        //读出目录下的子文件        File[] list_1 = file.listFiles();        //遍历写入list中        for (int i = 0; i < list_1.length; i++) {            list.add(list_1[i].getName());        }        //返回list        return list;    }    /**      *      * 通过传入的文件名进行数据库的恢复     * 通过url的文件 和mysql的指令 进行操作、     * @time:2015-11-22 下午03:54:54     * @param:@param url      */    public void getRollBack(String url){        //读取文件        File file = new File( path + url);        //流的声明        BufferedReader reader = null;        OutputStream out = null;        OutputStreamWriter write = null;        try {            //建立读取的文件流 通过utf-8的方式            reader = new BufferedReader(                    new InputStreamReader(new FileInputStream(file),"utf-8"));            String inStr;            StringBuffer sb = new StringBuffer();            //读取文件            while((inStr = reader.readLine()) != null){                sb.append(inStr+"\t\n");            }            inStr = sb.toString();            //控制mysql的指令            Runtime rt = Runtime.getRuntime();            String cmd ="mysql -u"+ name +" -p"+password +" "+dataName;            //执行指令            Process pro = rt.exec(cmd);            //得到out的流            out = pro.getOutputStream();            write = new OutputStreamWriter(out,"utf-8");            //读入sql 文件的东西            write.write(inStr);            write.flush();        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }finally{            //关闭对象流            try {                if(reader != null){                    reader.close();                }                if(out != null){                    out.close();                }                if(write != null){                    write.close();                }            } catch (IOException e) {                e.printStackTrace();            }        }    }}

主要就是对mysql 自己的数据库备份的操作,mysqldump 这个语法 要进行掌握。

0 0
原创粉丝点击