现在正在做一个项目,数据库是在另外一个机器上,现在我想做一个导出数据表的操作,就是把数据库中的一个表导出成.sql文件保存在本地,有什么办法?

解决方案 »

  1.   

    //备份   public boolean backup(String path) {
     String cmd="mysqldump -h"+ip+" -u"+用户名+" -p"+密码+" "+数据库名称;
      
        try 
        {   
         Runtime rt = Runtime.getRuntime();   
            
            // 调用 mysql 的 cmd:   
            Process child = rt   
            .exec("cmd /c "+cmd);// 设置导出编码为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(path);   
            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();   
            System.out.println("failure!<br>"  );
        }   
      
        return true;   
    }   
    // path是软出路径
      

  2.   

    你这个要配置环境变量,
    mysql的bin目录,跟java一样的,这样才能正常备份
      

  3.   


    Linux 办法public class DataBackup {
       public void cronJobToRunEveryDay() {
          String filename = "database_name_" + new Date().getTime() + ".sql";
          try{
             Runtime.getRuntime().exec("mysql -u username --password=password database_name > " + filename);         ftpFileToSomewhere(filename, remoteFile);         }catch(Exception e){
          }
       }   public void ftpFileToSomewhere(String filename, String remoteFilename) {
          ......
       }
    }
      

  4.   

    sorry:Runtime.getRuntime().exec("mysqldump -u username --password=password database_name > " + filename);
      

  5.   

    2楼的好像不太好使,文件可以出来,但是文件是空的。而且,网上到处都是这样的例子。
    大家都是用mysqldump -u username --password=password databasename > filepath
    可是这在服务器上好使,在客户端就不太好使。我的程序和数据库不在一个机器上,但是在一个局域网内。
    还有哪位大虾有好的方法,只要有用,分全都给你,虽然不多
      

  6.   

    原则上讲Java客户端控制服务端是裤衩子耍大刀 不过有别的办法 通过使用服务端的JSP文件让服务端自己执行本地命令进行数据库备份我想应该可以 至于获得备份好的数据就不用再说了吧..期待LZ早日成功
      

  7.   

    LZ可以在mysql的机器上运行java程序吗?如果可以就话就做个线程,你的机器这面接受就行了,让那个java程序自己在那面跑就行了