java mysql數據庫備份還原代碼

xcxc 10年前發布 | 3K 次閱讀 Java MySQL

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
public class TestMysql {

public static void main(String[] args) { System.out.println("開始備份..."); backup(); System.out.println("備份成功...");

System.out.println("開始還原..."); load1(); System.out.println("還原成功..."); }

public static void backup() { try { Runtime rt = Runtime.getRuntime(); // 調用 調用mysql的安裝目錄的命令 Process child = rt .exec("E://xampp//mysql//bin//mysqldump.exe -h localhost -uroot -p ultrax"); // 設置導出編碼為utf-8。這里必須是utf-8 // 把進程執行中的控制臺輸出信息寫入.sql文件,即生成了備份文件。注:如果不對控制臺信息進行讀出,則會導致進程堵塞無法運行 InputStream in = child.getInputStream();// 控制臺的輸出信息作為輸入流 InputStreamReader xx = new InputStreamReader(in, "utf-8"); // 設置輸出流編碼為utf-8。這里必須是utf-8,否則從流中讀入的是亂碼 String inStr; StringBuffer sb = new StringBuffer(""); String outStr; // 組合控制臺輸出信息字符串 BufferedReader br = new BufferedReader(xx); while ((inStr = br.readLine()) != null) { sb.append(inStr + "\r\n"); } outStr = sb.toString(); // 要用來做導入用的sql目標文件: FileOutputStream fout = new FileOutputStream( "c:/test.sql"); OutputStreamWriter writer = new OutputStreamWriter(fout, "utf-8"); writer.write(outStr); writer.flush(); in.close(); xx.close(); br.close(); writer.close(); fout.close(); System.out.println(""); } catch (Exception e) { e.printStackTrace(); } }

public static void load() { try { String fPath = "c:/test.sql"; Runtime rt = Runtime.getRuntime(); // 調用 mysql 安裝目錄的命令 Process child = rt.exec("E://xampp//mysql//bin//mysql -u root -p cdcol");

OutputStream out = child.getOutputStream();// 控制臺的輸入信息作為輸出流 String inStr; StringBuffer sb = new StringBuffer(""); String outStr; BufferedReader br = new BufferedReader(new InputStreamReader( new FileInputStream(fPath), "utf-8")); while ((inStr = br.readLine()) != null) { sb.append(inStr + "\r\n"); } outStr = sb.toString(); System.out.println(outStr); OutputStreamWriter writer = new OutputStreamWriter(out, "utf-8"); System.out.println("7777777777777777777777777777777777777"); writer.write(outStr); System.out.println("888888888888888888888888888888888888888"); writer.flush(); out.close(); br.close(); writer.close(); System.out.println(""); } catch (Exception e) { e.printStackTrace(); } }

public static void load1() {
try {
String fPath = "c:/test.sql";
Runtime rt = Runtime.getRuntime();

        // 調用 mysql 的 cmd:      
        Process child = rt.exec("E://xampp//mysql//bin//mysql.exe -uroot -p cdcol ");      
        OutputStream out = child.getOutputStream();//控制臺的輸入信息作為輸出流      
        String inStr;      
        StringBuffer sb = new StringBuffer("");      
        String outStr;      
        BufferedReader br = new BufferedReader(new InputStreamReader(      
                new FileInputStream(fPath), "utf8"));      
        while ((inStr = br.readLine()) != null) {      
            sb.append(inStr + "\r\n");      
        }      
        outStr = sb.toString();      

        OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");      
        writer.write(outStr);      
        // 注:這里如果用緩沖方式寫入文件的話,會導致中文亂碼,用flush()方法則可以避免      
        writer.flush();      
        // 別忘記關閉輸入輸出流      
        out.close();      
        br.close();      
        writer.close();      

        System.out.println("");      

    } catch (Exception e) {      
        e.printStackTrace();      
    }      

} 

} </pre>

 本文由用戶 xcxc 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!