关闭

数据库还原

253人阅读 评论(0) 收藏 举报

地址 :http://dl2.csdn.net/down4/20070911/11165453513.bat
  * 恢复数据(mysql中cnids_manager数据库中的数据)
  * 根据用户上传的文件恢复数据库
  *  主要步骤:
  *      1.通过上传的FormFile获得文件输入流
  *      2.创建一个输出流,没有路径的,系统会默认保存到tomcat/bin目录里面
  *      3.获得保存文件的绝对路径
  *      4.从配置文件中获取数据库信息(帐户,密码,IP地址)
  *      5.执行批处理文件恢复数据(将3,4的信息作为参数传入批处理文件)
  */
 public void resume(FormFile file) throws Exception {
  String fileName = null;
  if (file != null && file.getFileName().length() > 0) {            //判断上传文件是否为空
   fileName = file.getFileName();                                //获取文件名
   InputStream streamIn = file.getInputStream();                 //获得上传文件的输入流
   OutputStream streamOut = new FileOutputStream(fileName);      //构建一个输出流,生成的文件将会保存在tomcat/bin目录下
   int bytesRead = 0;
   byte[] buffer = new byte[1024];
   
   //循环的将上传的文件写入到fileName里面
   while((bytesRead = streamIn.read(buffer, 0, 1024)) != -1) {
    streamOut.write(buffer, 0, bytesRead);
   }
   //关闭输出流
   streamOut.close();  
   
   streamIn.close();                                             //关闭输入流
   file.destroy();                                               //销毁file
   
   File tempFile = null;
   
   tempFile = new File(fileName);                              
   String absolutePath = tempFile.getAbsolutePath();            //获得绝对路径,在tomcat/bin目录下
   log.info("absolutePath: " + absolutePath);
   
   String commondStr = "";
   String mysqlUserName = Util.getProperty("mysql_username");   //数据库帐户
   String mysqlPassword = Util.getProperty("mysql_password");   //数据库密码
   String host = Util.getProperty("mysql_host");                //数据库IP地址
   
   String dateHandleDir = Util.getProperty("dateHandleDir");   //批处理文件路径
   String resumeDir = dateHandleDir+"resume.bat";
    //resumeDir是恢复数据库的批处理文件地址,后面的是需要传入的参数
    commondStr = "/""+resumeDir + "/"" + " " + mysqlUserName + " " + mysqlPassword + " " + host + " " + "/""+absolutePath + "/"";
                                       //mysqlUserName数据用户名 ,mysqlPassword为密码,host为主机名,absolutepath为上传的文件的绝对路径
   log.debug("commondStr: " + commondStr);
   Runtime cmd = Runtime.getRuntime();
   boolean haveError = false;
   Process p = cmd.exec(commondStr);        //执行这个还原的批处理文件      
   String line;
   p.getOutputStream().close();
   BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream()));    //读取错误信息
   
   while ((line = br.readLine()) != null) {     //如果错误信息不为null说明出错了
    //发生错误
    log.info("<<<<<<<" + line);
    haveError = true;    
   }
   
   if (haveError) {
    //恢复数据库时发生错误
    throw new CnidsException(Constants.FAIL_RESUME_SQL);
   }
//}

      tempFile.delete();                  //操作完成,删除tempFile文件
   }
 } 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8574次
    • 积分:147
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:5篇
    • 译文:0篇
    • 评论:3条
    文章存档
    最新评论