java实现MySQL数据库的备份与还原

ackage com.tarena.lz.test;
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 Test4 {        
        
         public static void main(String[] args) { 
                /*                 
                * 备份:程序调用mysql的备份命令,读出控制台输入流信息,写入.sql文件; 
                * 导入:程序调用mysql的导入命令,把从.sql文件中读出的信息写入控制台的输出流                 
                */ 
                backup();   //数据库备份
                load();     //数据库还原
            } 
           
            public static void backup() { 
                try { 
                    Runtime rt = Runtime.getRuntime(); 
                    // 调用 mysql 的 cmd: 
                    Process child = rt .exec("mysqldump -u root -p123 test");
                           // 设置导出编码为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目标文件E:\\test5.sql                  FileOutputStream fout=new FileOutputStream( "E:\\test5.sql"); 
                 OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8"); 
                    writer.write(outStr);          
                    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:/test5.sql";
                Runtime rt = Runtime.getRuntime(); 
                    // 调用 mysql 的 cmd: 
                Process child = rt.exec("mysql -u root -p123  lzz"); 
                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); 
                            writer.flush(); 
                    // 别忘记关闭输入输出流 
                    out.close(); 
                    br.close(); 
                    writer.close(); 
                    System.out.println("/* Load OK! */"); 
                } catch (Exception e) { 
                    e.printStackTrace(); 
                } 
            } 


你可能感兴趣的:(java,sql,mysql)