/**
      * 数据库备份实现方法
      * 
      * 
      */
@Override
public String backupMysql() {
/*username = root 
password = root
mysqlpath = C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\
sql = E:\\MySQl\\
address=localhost
databaseName=test*/
//  Properties pros = getPprVue("prop.properties");
  // 这里是读取的属性文件,也可以直接使用
 // String username = pros.getProperty("username"); //数据库用户名
 // String password = pros.getProperty("password");//密码
                   //读取applicationDataSource.xml文件 取出 数据库名,
  // 得到MYSQL的用户名密码后调用 mysql 的 cmd:
                      String sql="E:\\MySQl\\";//备份文件存放路径                          
  String mysqlpaths = "";//pros.getProperty("mysqlpath");    //数据库服务安装地址(目录)
  String databaseName = "";//pros.getProperty("databaseName"); //数据库名称
  String address ="";// pros.getProperty("address"); //  服务URL
  String sqlpath = sql;//pros.getProperty("sql"); //  备份文件存放路径    
  String  username = "root"; 
            String  password = "123";
  mysqlpaths = "C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\";
 // C:\Program Files\MySQL\MySQL Server 5.0\bin
  address="127.0.0.1";
  databaseName="bims" ;
  File backupath = new File(sqlpath);  //  文件路径
  if (!backupath.exists()) {
   backupath.mkdir();
  }
  StringBuffer sb = new StringBuffer();
  sb.append(mysqlpaths);
  sb.append("mysqldump ");
  sb.append("--opt ");
  sb.append("-h ");
  sb.append(address);
  sb.append(" ");
  sb.append("--user=");
  sb.append(username);
  sb.append(" ");
  sb.append("--password=");
  sb.append(password);
  sb.append(" ");
  sb.append("--lock-all-tables=true ");
  sb.append("--result-file=");
  sb.append(sqlpath);
  //sb.append(sql);
  sb.append(" ");
  sb.append("--default-character-set=utf8 ");
  sb.append(databaseName);
  String time=StringUtil.dateToStr(new Date(), "yyyy-MM-dd");
  String filename=time+".sql"; 
 // String filename=String.valueOf(System.currentTimeMillis())+".sql"; 
  sb.append(" >"+filename);
 
  Runtime cmd = Runtime.getRuntime();
  try {
   Process p = cmd.exec(sb.toString());
   System.out.println("调用命令:"+sb.toString());
  } catch (IOException e) {
   e.printStackTrace();
  } return null;
}

解决方案 »

  1.   

    C:\Documents and Settings\Administrator>C:\Program Files\MySQL\MySQL Server 5.0\
    bin mysqldump --opt -h 127.0.0.1 --user=root --password=123 --lock-all-tables=tr
    ue --result-file=E:\MySQl\ --default-character-set=utf8 bims >beif.sql
    'C:\Program' 不是内部或外部命令,也不是可运行的程序
      

  2.   

    不知道SB是什么  这个是在CMD里运行的 的 在创建的文件夹里美有备份的文件 不知道哪里出问题了
      

  3.   

    Microsoft Windows XP [版本 5.1.2600]
    (C) 版权所有 1985-2001 Microsoft Corp.C:\Documents and Settings\Administrator>mysqldump --opt -h 127.0.0.1 --user=root
     --password=123 --lock-all-tables=true --result-file=E:\MySQl\ --default-charact
    er-set=utf8 bims >beif.sql
    mysqldump: Can't create/write to file 'E:\MySQl\' (Errcode: 2)
      

  4.   

    C:\Documents and Settings\Administrator>"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump" --opt -h 127.0.0.1 --user=root --password=123 --lock-all-tables=true --result-file=E:\MySQl\ --default-character-set=utf8 bims >beif.sql缺少引号\
      

  5.   

    C:\Documents and Settings\Administrator>mysqldump --opt -h 127.0.0.1 --user=root  --password=123 --lock-all-tables=true --result-file=E:\MySQl\test.sql --default-character-set=utf8 bims >beif.sql你没有加上文件名了,只是个目录名。
    --result-file=E:\MySQl\test.sql
      

  6.   

    -- MySQL dump 10.10
    --
    -- Host: localhost    Database: bims
    -- ------------------------------------------------------
    -- Server version 5.0.27-community-nt/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
    /*!40103 SET TIME_ZONE='+00:00' */;
    /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
    只有这个
      

  7.   

    全部备份?
    加入 -B -E -R -p参数试试
      

  8.   

    直接这样做会引起阻塞,要从Runtime.exec()返回的Process命令窗口中获取流,一行一行的写入文件。
    下面是一个我测试成功了的例子,你可以参考一下:import java.io.*;public class TestMysqlBackup{ public static void main(String[] args) throws Exception{
    String mysql = "E:\\wamp\\mysql\\bin\\mysqldump -uroot -p123 csdn";
    //mysqldump路径,用户名,密码(数据库必须要设置密码),数据库名,需要哪些选项可以增加
    Process proc = Runtime.getRuntime().exec("cmd /c "+mysql);
    InputStreamReader isr = new InputStreamReader(proc.getInputStream());
    BufferedReader br = new BufferedReader(isr);
    FileOutputStream fos = new FileOutputStream("D:\\csdn.sql");
    OutputStreamWriter osw = new OutputStreamWriter(fos);
    BufferedWriter bw = new BufferedWriter(osw);
    String line = null;
    while((line = br.readLine())!=null){
    bw.write(line);
        bw.flush();
    }
    br.close();
                    bw.close();
    }
    }
      

  9.   

    -- MySQL dump 10.10
    --
    -- Host: 127.0.0.1    Database: bims
    -- ------------------------------------------------------
    -- Server version 5.0.27-community-nt/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
    /*!40103 SET TIME_ZONE='+00:00' */;
    /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;--
    -- Table structure for table `t_bims_areamanagement`
    --DROP TABLE IF EXISTS `t_bims_areamanagement`;
    CREATE TABLE `t_bims_areamanagement` (
      `m_id` varchar(32) NOT NULL default '',
      `m_name` varchar(50) default NULL,
      `m_code` varchar(32) default NULL,
      `m_createUser` varchar(32) default NULL,
      `m_modifyTime` datetime default NULL,
      `m_isdel` varchar(1) default NULL,
      `m_tempa` varchar(32) default NULL,
      `m_tempb` varchar(32) default NULL,
      PRIMARY KEY  (`m_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=gbk;--
    -- Dumping data for table `t_bims_areamanagement`
    --LOCK TABLES `t_bims_areamanagement` WRITE;
    /*!40000 ALTER TABLE `t_bims_areamanagement` DISABLE KEYS */;
    INSERT INTO `t_bims_areamanagement` VALUES ('d1000','4028849d24d6be350124d6c3e9330005',NULL,'1','2009-11-24 09:04:07','0',NULL,NULL),('d1001','4028849d24d6be350124d6e0e7ed003f',NULL,'1','2009-11-23 14:26:52','0',NULL,NULL),('d1002','4028849d24d6be350124d6c4a242000b',NULL,'1','2009-11-23 14:26:55','0',NULL,NULL),('d1003','4028849d24d6be350124d6c4d642000d',NULL,'1','2009-11-23 14:26:55','0',NULL,NULL),('d1004','4028849d24d6be350124d6cb1b9b0013',NULL,'1','2009-11-23 14:26:55','0',NULL,NULL),('d1005','4028849d24d6be350124d6e7413b004b',NULL,'1','2009-11-23 14:26:55','0',NULL,NULL),('d1006','4028849d24d6be350124d6e89e1c0050',NULL,'1','2009-11-23 14:26:55','0',NULL,NULL),('d1007','4028849d24d6be350124d6e80130004e',NULL,'1','2009-11-23 14:26:55','0',NULL,NULL),('d1008','4028849d24d6be350124d6ea2a59005a',NULL,'1','2009-11-23 14:26:55','0',NULL,NULL);
    正确的是有表及数据的备份啊 命令我运行了没错
      

  10.   

    搞定接贴
    我的代码 /**
          * 数据库备份实现方法
          * 一定要看环境变量里设置了MySQL安装路径( C:\Program Files\MySQL\MySQL Server 5.0\bin)没 如果没设置就不行
          * 
          */
    @Override
    public String backupMysql() {

     String sql="E:\\MySQl\\";//备份文件存放路径                                    String mysqlpaths = "";//pros.getProperty("mysqlpath");    //数据库服务安装地址(目录)
      String databaseName = "";//pros.getProperty("databaseName"); //数据库名称
      String address ="";// pros.getProperty("address"); //  服务URL
      String sqlpath = sql;//pros.getProperty("sql"); //  备份文件存放路径    
      String  username = "root"; 
             String  password = "123";
     // mysqlpaths = "C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\";
     // C:\Program Files\MySQL\MySQL Server 5.0\bin
      address="localhost";
      databaseName="bims" ;
      File backupath = new File(sqlpath);  //  文件路径
      if (!backupath.exists()) {
       backupath.mkdir();
      }
      String time=StringUtil.dateToStr(new Date(), "yyyy-MM-dd");
      String filename=time+".sql"; 
      StringBuffer sb = new StringBuffer();
      sb.append("mysqldump ");
      sb.append("--opt ");
      sb.append("-h ");
      sb.append(address);
      sb.append(" ");
      sb.append("--user=");
      sb.append(username);
      sb.append(" ");
      sb.append("--password=");
      sb.append(password);
      sb.append(" ");
      sb.append("--lock-all-tables=true ");
      sb.append("--result-file=");   
      sb.append(sqlpath);
      sb.append(filename);
      sb.append(" ");
      sb.append("--default-character-set=utf8 ");
      sb.append(databaseName);    
      Runtime cmd = Runtime.getRuntime();
      try {
       Process p = cmd.exec("cmd /c "+sb.toString());
      // Process proc = Runtime.getRuntime().exec("cmd /c "+mysql);
            InputStreamReader isr = new InputStreamReader(p.getInputStream());
            BufferedReader br = new BufferedReader(isr);
            FileOutputStream fos = new FileOutputStream(sqlpath+filename);
            OutputStreamWriter osw = new OutputStreamWriter(fos);
            BufferedWriter bw = new BufferedWriter(osw);
            String line = null;
            while((line = br.readLine())!=null){
                bw.write(line);
                bw.flush();
            }
                   br.close();
                    bw.close();
       System.out.println("调用命令:"+sb.toString());
      } catch (IOException e) {
       e.printStackTrace();//这里的异常没处理
      }