Java實現Mysql資料匯入匯出

來源:互聯網
上載者:User

標籤:

package com.backup;

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 Test {

 /**
     * @param args
     */
    public static void main(String[] args) {
        /*
         * 備份和匯入是一個互逆的過程。
         * 備份:程式調用mysql的備份命令,讀出控制台輸入資料流資訊,寫入.sql檔案;
         * 匯入:程式調用mysql的匯入命令,把從.sql檔案中讀出的資訊寫入控制台的輸出資料流
         * 注意:此時定向符">"和"<"是不能用的
         */
        //backup();
        //load();
    }

    /**
     * 備份檢驗一個sql檔案是否可以做匯入檔案用的一個判斷方法:把該sql檔案分別用記事本和ultra
     * edit開啟,如果看到的中文均正常沒有亂碼,則可以用來做匯入的源檔案(不管sql檔案的編碼格式如何,也不管db的編碼格式如何)
     */
    public static void backup() {
        try {
            Runtime rt = Runtime.getRuntime();

            // 調用 mysql 的 cmd:
            Process child = rt
                    .exec("mysqldump -u root --set-charset=utf8 pj");// 設定匯出編碼為utf8。這裡必須是utf8
           
            // 把進程執行中的控制台輸出資訊寫入.sql檔案,即產生了備份檔案。註:如果不對控制台資訊進行讀出,則會導致進程堵塞無法運行
            InputStream in = child.getInputStream();// 控制台的輸出資訊作為輸入資料流
                       
            InputStreamReader xx = new InputStreamReader(in, "utf8");// 設定輸出資料流編碼為utf8。這裡必須是utf8,否則從流中讀入的是亂碼
           
            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(
                    "e:/bjse22.sql");
            OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");
            writer.write(outStr);
            // 註:這裡如果用緩衝方式寫入檔案的話,會導致中文亂碼,用flush()方法則可以避免
            writer.flush();

            // 別忘記關閉輸入輸出資料流
            in.close();
            xx.close();
            br.close();
            writer.close();
            fout.close();

            System.out.println("/* Output OK! */");

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

    }

    /**
     * 匯入
     *
     */
    public static void load() {
        try {
            String fPath = "e:/bjse22.sql";
            Runtime rt = Runtime.getRuntime();

            // 調用 mysql 的 cmd:
            Process child = rt.exec("mysql -u root pj ");
            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("/* Load OK! */");

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

    }

}

 

本文轉自:http://www.blogjava.net/zhaosoft/archive/2008/10/30/237514.html

Java實現Mysql資料匯入匯出

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.