`

Java程序调用系统命令进行mysql数据库的备份与还原(方式二)

阅读更多
第二种方式:

数据备份:
public class DBBackup {

public static void backup(String DBName,String file){
   String user = "root"; // 数据库帐号
    String password = "123456"; // 登陆密码
    String database = DBName; // 需要备份的数据库名
    String filepath = file; // 备份的路径地址
    //mysql命令的路径
    String mysqlPath="C:/Program Files/MySQL/MySQL Server 5.1/bin/";
    try{
          Runtime rt = Runtime.getRuntime();
          Process child = rt.exec(mysqlPath+"mysqldump  -u"+user+" -p"+password+" "+database);
          InputStream in = child.getInputStream();// 控制台的输出信息作为输入流
          InputStreamReader isr = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
            String inStr;   
          StringBuffer sb = new StringBuffer("");   
          String outStr; 
          // 组合控制台输出信息字符串   
            BufferedReader br = new BufferedReader(isr);
          while ((inStr = br.readLine()) != null) {   
                sb.append(inStr + "\r\n");   
          }
          outStr = sb.toString();//备份出来的内容是一个字条串
            FileOutputStream fout = new FileOutputStream(filepath);
          OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");
           writer.write(outStr);//写文件   
            // 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免   
            writer.flush(); 
           // 别忘记关闭输入输出流   
              in.close();   
            isr.close();   
            br.close();   
            writer.close();   
            fout.close();
    }
    catch(Exception e){
         e.printStackTrace();
    }
}

}



数据还原:
public class DBUpload {

   private static String databases;
   static{
       QueryBuilder qb=new QueryBuilder("show databases;");
       DataTable dt=qb.executeDataTable();
       StringBuffer court=new StringBuffer("");
       if(dt.getRowCount()>0){
for(int i=0;i<dt.getRowCount();i++){
   if(i==0){
court.append(dt.getString(i,"Database"));
   }else{
      court.append(","+dt.getString(i,"Database"));
}
}
  databases=court.toString().trim();
}else{
    databases="";
}
}

      //判断数据库是否已经存在
       public static boolean isExist(String DBName){
if(StringUtil.isEmpty(databases)){
      return false;
}else{
   String dbs[]=databases.split(",");
   for(int i=0;i<dbs.length;i++){
      if(DBName.equalsIgnoreCase(dbs[i])){
  return true;
       }else{
continue;
        }
    }
return false;
       }
      }


    public static boolean  load(String DBName,String file){
         String user = "root"; // 数据库帐号
String password = "mysql"; // 登陆密码
String database = DBName; // 需要备份的数据库名
String filepath=file;
String str1="mysqladmin -u "+user+" -p"+password+" create "+database;
String str2="mysql -u "+user+" -p"+password+" "+database;
try{
    if(!isExist(DBName)){//不存在此数据库
Process p=Runtime.getRuntime().exec(str1);
p.waitFor();
     }
    Process child=Runtime.getRuntime().exec(str2);
    OutputStream out = child.getOutputStream();//控制台的输入信息作为输出流
     String inStr;
              StringBuffer sb = new StringBuffer("");
              String outStr;
              BufferedReader br=new BufferedReader(new InputStreamReader( new FileInputStream(filepath), "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("数据导入成功!");
   }
   catch(Exception e){
   e.printStackTrace();
   }
   return false;
  
   }

}


此方式可以接受命令的路径命中包含空格!!


如果程序出现如后错误:java.io.IOException: 管道已结束
                     或
                      java.io.IOException: 管道正在被关闭
可能是你的链接数据库的密码设置错误
分享到:
评论

相关推荐

    java mysql 数据库备份和还原操作(csdn)————程序.pdf

    上述代码展示了如何使用Java来实现MySQL数据库的备份和还原操作。以下是对这些操作的详细解释: 首先,代码导入了多个Java库,包括`java.io`包下的类,用于处理输入/输出流,以及`java.util`包下的类,如`Date`和`...

    mysql数据库备份与恢复

    本知识点将深入探讨如何在SpringBoot环境下对MySQL数据库进行备份与恢复,以确保数据的安全。 首先,`MysqlBackup.java` 文件很可能是实现备份和恢复功能的核心Java类。在SpringBoot中,我们可以利用JDBC(Java ...

    mysql(完整、增量)备份与还原

    MySQL数据库在日常运维中扮演着至关重要的角色,因此掌握如何进行完整备份、增量备份与还原是每个IT专业人员必备的技能。在这个主题中,我们将深入探讨如何使用Java来实现这些功能。 首先,让我们理解什么是数据库...

    JAVA实现数据库备份与还原

    通过上述介绍可以看出,使用Java调用`mysqldump`和`mysql`工具进行MySQL数据库的备份与恢复是一种简单有效的方法。不仅可以提高数据安全性,还能够通过编写脚本来实现自动化的数据备份与恢复流程,极大地提高了工作...

    Java实现SqlServer及MySql的备份与还原(经典版).docx

    【Java实现SQL Server及MySQL备份与还原】 在Java开发中,有时我们需要对数据库进行备份和还原操作,以确保数据的安全性和可恢复性。本篇将详细介绍如何使用Java来实现SQL Server和MySQL这两种常见数据库的备份与...

    java备份还原数据库

    在Java中,可以使用`Runtime.getRuntime().exec()`方法调用操作系统命令(如mysqldump for MySQL)来完成物理备份。 - **逻辑备份**:通过执行SQL语句导出数据,例如`SELECT INTO OUTFILE`或`mysqldump --no-create...

    java jsp实现mysql备份还原 代码

    ### Java JSP 实现 MySQL 数据库备份与还原 #### 知识点概述 本文将详细介绍如何使用 Java Bean 技术配合 JSP 来实现 MySQL 数据库的备份与还原功能。在实际开发过程中,数据库的备份与恢复是非常重要的环节,它...

    java实现数据库容灾备份

    在`DemoController.java`中,可能包含了一个处理数据库备份请求的控制器,它调用了相关的备份服务或工具。而`java实现数据库备份说明.txt`文件可能详细阐述了实现备份的具体步骤和技术细节,包括代码示例、配置说明...

    JAVA实现数据库备份与还原.pdf

    - 同样地,使用Java调用MySQL客户端命令(如`mysql`命令)来进行数据还原。 - 示例Java代码片段如下: ```java public boolean restore(String file) { boolean isSuccess = true; try { Runtime rt = ...

    数据库备份与还原

    6. **压缩包子文件的文件名称列表**:“数据库备份还原”可能包含数据库备份的压缩文件,如`.zip`或`.gz`格式,这些文件可能包含多个数据库备份文件,如全备文件、日志文件或其他格式的备份。 在实际操作中,开发者...

    JAVA实现数据库备份与还原扫描.pdf

    总之,使用Java实现MySQL数据库的备份与还原,可以通过调用系统命令结合`mysqldump`和`mysql`工具,同时处理好输入输出流,确保数据的安全传输和存储。在实际操作中,还需要关注性能、安全性以及不同场景下的优化...

    Java备份还原MySQL

    本主题将详细探讨如何使用Java来实现MySQL数据库的备份和还原功能。 首先,让我们了解为什么需要进行数据库备份。数据库备份的主要目的是防止数据丢失,这可能由于硬件故障、软件错误、恶意攻击或意外删除等原因...

    MySQL_Oralce数据库备份和还原的常用命令[文].pdf

    MySQL数据库备份通常涉及以下几种方法: 1. **完整数据库备份**:使用`mysqldump`工具进行全量备份,命令如下: ```bash mysqldump -hhostname -uusername -ppassword databasename &gt; backupfile.sql ``` 这个...

    Java实现SqlServer及MySql的备份与还原(经典版).pdf

    本文将深入探讨如何使用Java编程语言来实现对SQL Server和MySQL数据库的备份与还原功能。 首先,我们需要一个数据库连接基类,如`DataBaseUtil`,它负责建立和关闭与数据库的连接。在这个例子中,作者使用了Struts1...

    数据库备份还原源代码

    本文将深入探讨“数据库备份还原”的概念、重要性、常见方法以及源代码实现。 首先,数据库备份是保护数据免受意外丢失或损坏的关键步骤。这可能包括硬件故障、软件错误、人为误操作、病毒攻击或者自然灾害等不可...

    使用Java备份还原MySQL

    首先,备份MySQL数据库通常涉及到SQL的`mysqldump`命令,但在Java环境中,我们可以通过调用操作系统命令或者使用相关的Java库来实现。这里主要介绍使用Java的Runtime类或ProcessBuilder类来调用外部`mysqldump`工具...

    用Java实现MySQL的备份与恢复

    通过以上步骤,我们成功地实现了使用Java对MySQL数据库进行备份与恢复的功能。这种方法不仅简单高效,而且可以根据实际需求灵活调整。这对于维护数据库的完整性以及保证数据安全至关重要。在实际应用中,还可以考虑...

    数据库还原备份(完整设计代码)

    另一方面,"BackUpAndRestore"可能是实际的源代码文件,可能包含了实现备份和恢复功能的程序代码,例如使用编程语言(如Java、Python、C#)与数据库进行交互,执行备份和恢复操作的API调用等。 学习和实践这些内容...

Global site tag (gtag.js) - Google Analytics