<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,  comments - 11,  trackbacks - 0

    代碼如下:

    /*
    * @(#)DatabaseBackup.java Apr 23, 2009
    *
    * Copyright (c) 2009 by jadmin. All Rights Reserved.
    */

    package util.dbak;

    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.PrintWriter;
    import java.io.UnsupportedEncodingException;

    /**
    * MySQL數據庫的備份與恢復
    * 缺陷:可能會被殺毒軟件攔截
    *
    * @author <a href="mailto:jadmin@163.com">jadmin</a>
    * @version $Revision: 1.0 Apr 23, 2009 11:44:00 PM $
    */
    public class DatabaseBackup {

    /** MySQL安裝目錄的Bin目錄的絕對路徑 */
    private String mysqlBinPath;

    /** 訪問MySQL數據庫的用戶名 */
    private String username;

    /** 訪問MySQL數據庫的密碼 */
    private String password;

    public String getMysqlBinPath() {
    ?? return mysqlBinPath;
    }

    public void setMysqlBinPath(String mysqlBinPath) {
    ?? this.mysqlBinPath = mysqlBinPath;
    }

    public String getUsername() {
    ?? return username;
    }

    public void setUsername(String username) {
    ?? this.username = username;
    }

    public String getPassword() {
    ?? return password;
    }

    public void setPassword(String password) {
    ?? this.password = password;
    }

    public DatabaseBackup() {
    ?? super();
    }

    public DatabaseBackup(String mysqlBinPath, String username, String password) {
    ?? super();
    ?? if (!mysqlBinPath.endsWith(File.separator)) {
    ??? mysqlBinPath = mysqlBinPath + File.separator;
    ?? }
    ?? this.mysqlBinPath = mysqlBinPath;
    ?? this.username = username;
    ?? this.password = password;
    }

    /**
    * 備份數據庫
    *
    * @param output 輸出流
    * @param dbname 要備份的數據庫名
    */
    public void backup(OutputStream output, String dbname) {
    ?? String command = "cmd /c " + mysqlBinPath + "mysqldump -u" + username + " -p" + password + " --set-charset=utf8 "
    ???? + dbname;
    ?? System.out.println(command);
    ?? PrintWriter p = null;
    ?? BufferedReader reader = null;
    ?? try {
    ??? p = new PrintWriter(new OutputStreamWriter(output, "utf8"));
    ??? Process process = Runtime.getRuntime().exec(command);
    ??? InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream(), "utf8");
    ??? reader = new BufferedReader(inputStreamReader);
    ??? String line = null;
    ??? while ((line = reader.readLine()) != null) {
    ???? p.println(line);
    ??? }
    ??? p.flush();
    ?? } catch (UnsupportedEncodingException e) {
    ??? e.printStackTrace();
    ?? } catch (IOException e) {
    ??? e.printStackTrace();
    ?? } finally {
    ??? try {
    ???? if (reader != null) {
    ????? reader.close();
    ???? }
    ???? if (p != null) {
    ????? p.close();
    ???? }
    ??? } catch (IOException e) {
    ???? e.printStackTrace();
    ??? }
    ?? }
    }

    /**
    * 備份數據庫,如果指定路徑的文件不存在會自動生成
    *
    * @param dest 備份文件的路徑
    * @param dbname 要備份的數據庫
    */
    public void backup(String dest, String dbname) {
    ?? try {
    ??? OutputStream out = new FileOutputStream(dest);
    ??? backup(out, dbname);
    ?? } catch (FileNotFoundException e) {
    ??? e.printStackTrace();
    ?? }
    }

    /**
    * 恢復數據庫
    *
    * @param input 輸入流
    * @param dbname 數據庫名
    */
    public void restore(InputStream input, String dbname) {
    ?? String command = "cmd /c " + mysqlBinPath + "mysql -u" + username + " -p" + password + " " + dbname;
    ?? try {
    ??? Process process = Runtime.getRuntime().exec(command);
    ??? OutputStream out = process.getOutputStream();
    ??? String line = null;
    ??? String outStr = null;
    ??? StringBuffer sb = new StringBuffer("");
    ??? BufferedReader br = new BufferedReader(new InputStreamReader(input, "utf8"));
    ??? while ((line = br.readLine()) != null) {
    ???? sb.append(line + "\r\n");
    ??? }
    ??? outStr = sb.toString();

    ??? OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");
    ??? writer.write(outStr);
    ??? writer.flush();
    ??? out.close();
    ??? br.close();
    ??? writer.close();
    ?? } catch (UnsupportedEncodingException e) {
    ??? e.printStackTrace();
    ?? } catch (IOException e) {
    ??? e.printStackTrace();
    ?? }

    }

    /**
    * 恢復數據庫
    *
    * @param dest 備份文件的路徑
    * @param dbname 數據庫名
    */
    public void restore(String dest, String dbname) {
    ?? try {
    ??? InputStream input = new FileInputStream(dest);
    ??? restore(input, dbname);
    ?? } catch (FileNotFoundException e) {
    ??? e.printStackTrace();
    ?? }
    }

    public static void main(String[] args) {
    ?? DatabaseBackup bak = new DatabaseBackup("C:/MySQL/UTF8/bin", "root", "root");
    ?? bak.restore("c:/t.sql", "ttk");
    }
    }

    tags:java,mysql,database,數據庫,備份,恢復,mysql命令

    posted on 2009-04-24 22:55 jadmin 閱讀(84) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产精品免费看香蕉| 亚洲高清无码在线观看| 亚洲日韩看片无码电影| 啊灬啊灬别停啊灬用力啊免费看| 国产精品成人免费观看| 亚洲美女视频一区二区三区| 在线观看免费亚洲| 日韩精品内射视频免费观看| 亚洲av无码一区二区三区天堂| 夜夜春亚洲嫩草影院| 国产精品久久久久久久久久免费| 精品无码国产污污污免费网站国产 | 一级毛片免费毛片毛片| 久久精品a亚洲国产v高清不卡| 免费看www视频| 无码人妻丰满熟妇区免费| 亚洲精品美女久久7777777| 久久久久久久综合日本亚洲| 成人毛片免费观看视频| 波多野结衣免费一区视频| 亚洲日本VA午夜在线电影| 亚洲AV无码欧洲AV无码网站| 免费国产小视频在线观看| 最近中文字幕高清免费中文字幕mv| 国产亚洲女在线线精品| 亚洲成人福利在线观看| 亚洲人色婷婷成人网站在线观看| 拍拍拍又黄又爽无挡视频免费| 未满十八18禁止免费无码网站| 免费一级毛片在线播放视频免费观看永久 | 亚洲国产成人久久一区久久| 国产成人精品免费视频大| 久久成人18免费网站| 亚洲av永久无码一区二区三区| 91亚洲精品第一综合不卡播放| 国产亚洲美女精品久久久| 国产v片免费播放| 最近免费中文字幕视频高清在线看| 四虎影视成人永久免费观看视频| 四虎影视永久在线精品免费| 亚洲AV永久无码天堂影院 |