怎么实现用java在linux下备份和还原mysql数据库!

解决方案 »

  1.   

    俺只会:
    备份:先select出来,再写到csv或者xml文件中。
    反之亦然等待学习更好的办法good luck
      

  2.   

    跟操作系统没什么关系,要说有什么不一样,就备份路径不一样备份:public int backUp() { int exitVal = -1;
    String mysqldump= "mysqldump -u username -p psw -R -c database>备份文件路径(如:/my/back.sql)"; Runtime rt = Runtime.getRuntime();
    Process proc;
    try {
    proc = rt.exec(mysqldump);
    exitVal = proc.waitFor();// 成功返回0,失败返回-1
    } catch (IOException e) {
    e.printStackTrace();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    return exitVal;
    }这样你就把数据库脚本导出来了(对于mysqldump命令你如果不熟悉,网上资料一在堆,这里就不多说了)
      

  3.   

    发个详细点的吧:备份:public static void backup() {
    try {
         Runtime rt = Runtime.getRuntime();      Process child = rt.exec("mysqldump -u用户名 -p密码 -R -c --set-charset=utf8 数据库名");      InputStream in = child.getInputStream();      InputStreamReader xx = new InputStreamReader(in, "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();
         FileOutputStream fout = new FileOutputStream("备份的文件路径名");
         OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");
         writer.write(outStr);
         writer.flush();

         in.close();
         xx.close();
         br.close();
         writer.close();
         fout.close();
         } catch (Exception e) {
             e.printStackTrace();
         } }还原:
    public static void load() {
    try {
         String fPath = "备份的文件路径名";
         Runtime rt = Runtime.getRuntime();      Process child = rt.exec("mysql -u用户名 -p密码 数据库名");
         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();
         } catch (Exception e) {
             e.printStackTrace();
         }
    }