<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 国产1000部成人免费视频| 国产色爽免费无码视频| 1024免费福利永久观看网站| 亚洲AV无码一区二区三区系列 | 久久久久久久久久久免费精品| 全部免费国产潢色一级| 亚洲AV无码AV日韩AV网站| 日本一区二区三区日本免费| 色婷婷亚洲一区二区三区| 免费观看国产精品| 国产免费黄色无码视频| 亚洲乱码国产乱码精品精| 日韩免费电影网址| 亚洲国产精品免费在线观看| 日韩精品成人无码专区免费| 亚洲精品欧美综合四区| 亚洲国产黄在线观看 | 国色精品va在线观看免费视频| 亚洲日韩精品一区二区三区无码| 成人影片一区免费观看| 亚洲一区综合在线播放| 美女视频黄免费亚洲| 亚洲国产成人AV网站| 国产综合精品久久亚洲| 久久久久国产精品免费免费不卡| 亚洲mv国产精品mv日本mv| 四虎免费久久影院| 性xxxxx大片免费视频| 亚洲一区中文字幕在线电影网 | 国产亚洲av人片在线观看| 69视频在线观看免费| 亚洲另类无码专区丝袜| 国产日产亚洲系列| 国产卡二卡三卡四卡免费网址 | 国产成人久久精品亚洲小说| 亚洲另类激情综合偷自拍图| 日韩亚洲国产高清免费视频| 三年片在线观看免费观看大全中国| 亚洲AV午夜福利精品一区二区 | 亚洲一区精品中文字幕| 国产自产拍精品视频免费看|