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

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


    網站導航:
     
    主站蜘蛛池模板: 产传媒61国产免费| 美国毛片亚洲社区在线观看| 国产免费播放一区二区| 亚洲av永久无码精品漫画 | 日本永久免费a∨在线视频| 日韩一级在线播放免费观看| 亚洲欧美日韩中文无线码| 波多野结衣在线免费观看| 亚洲免费在线观看视频| 成年女人色毛片免费看| 亚洲AV无码一区二区乱子仑| 亚洲AV中文无码乱人伦在线视色| 色婷婷综合缴情综免费观看| 亚洲乱码中文字幕综合234 | 国产成人高清精品免费鸭子| 国产精品亚洲精品爽爽| 在线精品亚洲一区二区三区| 免费人成网站在线观看不卡| 亚洲综合激情视频| 成人毛片免费网站| 国产成人 亚洲欧洲| 亚洲中文字幕无码日韩| 91精品国产免费久久国语蜜臀 | 亚洲人成网77777亚洲色| 久章草在线精品视频免费观看| 亚洲成AV人片久久| 日韩一区二区免费视频| 国产精品免费久久久久久久久| 亚洲AV一宅男色影视| 国产99视频精品免费观看7| 风间由美在线亚洲一区| 亚洲综合伊人久久综合| 99久久99久久精品免费看蜜桃 | 久久久精品国产亚洲成人满18免费网站| 国产亚洲精品va在线| 免费下载成人电影| 又大又硬又粗又黄的视频免费看 | 亚洲AV成人精品一区二区三区| 亚洲精品无码成人片久久| 成人免费视频试看120秒| 永久免费A∨片在线观看|