您的位置:首页 > 编程语言 > Java开发

用Java备份MySQL

2016-06-29 20:25 549 查看
package sm_jdbc;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

/**

 * MySQL数据库备份

 * 

 * @author GaoHuanjie

 */

public class MySQLDatabaseBackup {

 /**

  * Java代码实现MySQL数据库导出

  * 

  * @author GaoHuanjie

  * @param hostIP MySQL数据库所在服务器地址IP

  * @param userName 进入数据库所需要的用户名

  * @param userName 进入数据库所需要的用户名

  * @param password 进入数据库所需要的密码

  * @param savePath 数据库导出文件保存路径

  * @param fileName 数据库导出文件文件名

  * @param databaseName 要导出的数据库名

  * @return 返回true表示导出成功,否则返回false。

  */

 public static boolean exportDatabaseTool(String hostIP, String userName, String password, String savePath, String fileName, String databaseName) throws InterruptedException {

  File saveFile = new File(savePath);

  if (!saveFile.exists()) {// 如果目录不存在

   saveFile.mkdirs();// 创建文件夹

  }

  if(!savePath.endsWith(File.separator)){

   savePath = savePath + File.separator;

  }

  

  PrintWriter printWriter = null;

  BufferedReader bufferedReader = null;

  try {

   printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(savePath + fileName), "utf8"));

   Process process = Runtime.getRuntime().exec(" mysqldump -h" + hostIP + " -u" + userName + " -p" + password + " --set-charset=UTF8 " + databaseName);

   InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream(), "utf8");

   bufferedReader = new BufferedReader(inputStreamReader);

            String line;

            while((line = bufferedReader.readLine())!= null){

             printWriter.println(line);

            }

            printWriter.flush();

   if(process.waitFor() == 0){//0 表示线程正常终止。

    return true;

   }

  }catch (IOException e) {

   e.printStackTrace();

  } finally {

   try {

    if (bufferedReader != null) {

     bufferedReader.close();

    }

    if (printWriter != null) {

     printWriter.close();

    }

   } catch (IOException e) {

    e.printStackTrace();

   }

  }

  return false;

 }

 

 public static void main(String[] args){

  try {

   if (exportDatabaseTool("127.0.0.1", "root", "cmhlw0214", "E:/最新", "test2.sql", "test")) {

    System.out.println("数据库成功备份!!!");

   } else {

    System.out.println("数据库备份失败!!!");

   }

  } catch (InterruptedException e) {

   e.printStackTrace();

  }

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: