java在線備份mysql,java 文件備份

本文目錄一覽:

java備份mysql數據庫,求大神解答。

1 public static String comman=”C:/Program Files/MySQL/MySQL Server 5.5/bin/mysql.exe -uroot -proot test”;

2 public static void back(String mySqlBackupName,String mysqlBackupPath, String command){

3

4 String fPath=mysqlBackupPath+”/”+new Date().getTime()+”.sql”;

5

6 Runtime rt = Runtime.getRuntime();

7 try {

8 Process child = rt.exec(command);

9 InputStream in = child.getInputStream();

如何使用java程序備份和恢復MySql數據庫?

java用開源的ssh jar包連接到b服務器執行備份/恢復命令,同樣通過命令也可以獲取到備份的文件信息,恢複數據庫也是一樣的,通過命令把文件傳輸到b服務器,通過命令進行還原

怎麼用java備份mysql數據庫?

首先,設置mysql的環境變量(在path中添加%MYSQL_HOME%\bin),重啟電腦。

完整代碼:

備份:

public static void main(String[] args) {

backup();

load();

}

public static void backup() {

try {

Runtime rt = Runtime.getRuntime();

// 調用 mysql 的 cmd:

Process child = rt

.exec(“mysqldump -u root –set-charset=utf8 bjse act_obj”);// 設置導出編碼為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(

“e:/mysql-5.0.27-win32/bin/bjse22.sql”);

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(“”);

} catch (Exception e) {

e.printStackTrace();

}

}

public static void load() {

try {

String fPath = “e:/mysql-5.0.27-win32/bin/bjse22.sql”;

Runtime rt = Runtime.getRuntime();

// 調用 mysql 的 cmd:

Process child = rt.exec(“mysql -u root bjse “);

OutputStream out = child.getOutputStream();//控制台的輸入信息作為輸出流

String inStr;

StringBuffer sb = new StringBuffer(“”);

String outStr;

BufferedReader br = new BufferedReader(new InputStreamReader(

new FileInputStream(fPath), “utf8”));

while ((inStr = br.readLine()) != null) {

sb.append(inStr + “\r\n”);

}

outStr = sb.toString();

OutputStreamWriter writer = new OutputStreamWriter(out, “utf8”);

writer.write(outStr);

// 註:這裡如果用緩衝方式寫入文件的話,會導致中文亂碼,用flush()方法則可以避免

writer.flush();

// 別忘記關閉輸入輸出流

out.close();

br.close();

writer.close();

System.out.println(“”);

} catch (Exception e) {

e.printStackTrace();

}

}

備份語句:

mysql SELECT * INTO OUTFILE “D:\\data\\db_testtemp.txt” fields terminated by ‘,

‘ from db_testtemp where std_state=’1’;

Query OK, 1 row affected (0.00 sec)

mysql SELECT * INTO OUTFILE “D:\\data\\db_testtemp.txt” fields terminated by ‘,

‘ from db_testtemp ;

Query OK, 2 rows affected (0.00 sec)

只生成一個只有數據的.txt:SELECT * INTO OUTFILE “D:\\data\\db_testtemp.txt” fields terminated by ‘,’ lines terminated by ‘\r\n’ from db_testtemp ;

只生成一個只有數據的.txt:mysqldump -uroot -pncae2010 -w “std_state=’1′” -T D:\data –no-create-info –fields-terminated-by=, exam db_testtemp

生成一個創建數據庫語句的.sql,一個只有數據的.txt:mysqldump -uroot -pncae2010 -w “std_state=’1′” -T D:\data –fields-terminated-by=, exam db_testtemp

只生成insert語句:mysqldump -uroot -pncae2010 -w “std_state=’1′” -t exam db_testtemp D:\data\a.sql

java 備份mysql數據庫

備份MySQL數據庫的方法:

import java.io.File;

import java.io.IOException;

/**

* MySQL數據庫備份

*

* @author GaoHuanjie

*/

public class MySQLDatabaseBackup {

/**

* Java代碼實現MySQL數據庫導出

*

* @author GaoHuanjie

* @param hostIP MySQL數據庫所在服務器地址IP

* @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) {

File saveFile = new File(savePath);

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

saveFile.mkdirs();// 創建文件夾

}

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

savePath = savePath + File.separator;

}

StringBuilder stringBuilder = new StringBuilder();

stringBuilder.append(“mysqldump”).append(” –opt”).append(” -h”).append(hostIP);

stringBuilder.append(” –user=”).append(userName) .append(” –password=”).append(password).append(” –lock-all-tables=true”);

stringBuilder.append(” –result-file=”).append(savePath + fileName).append(” –default-character-set=utf8 “).append(databaseName);

try {

Process process = Runtime.getRuntime().exec(stringBuilder.toString());

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

return true;

}

} catch (IOException e) {

e.printStackTrace();

} catch (InterruptedException e) {

e.printStackTrace();

}

return false;

}

public static void main(String[] args) throws InterruptedException {

if (exportDatabaseTool(“172.16.0.127”, “root”, “123456”, “D:/backupDatabase”, “2014-10-14.sql”, “test”)) {

System.out.println(“數據庫備份成功!!!”);

} else {

System.out.println(“數據庫備份失敗!!!”);

}

}

}

如何用Java實現MySQL數據庫的備份和恢復

註:要將mysql的bin目錄加入到環境變量Path中

將MySql中的數據庫導出到文件中 備份

import java.io.*;

import java.lang.*;

public class BeiFen {

public static void main(String[] args) {

// 數據庫導出

String user = “root”; // 數據庫帳號

String password = “root”; // 登陸密碼

String database = “test”; // 需要備份的數據庫名

String filepath = “e:\\test.sql”; // 備份的路徑地址

String stmt1 = “mysqldump ” + database + ” -u ” + user + ” -p”

+ password + ” –result-file=” + filepath;

/*

* String mysql=”mysqldump test -u root -proot

* –result-file=d:\\test.sql”;

*/

try {

Runtime.getRuntime().exec(stmt1);

System.out.println(“數據已導出到文件” + filepath + “中”);

}

catch (IOException e) {

e.printStackTrace();

}

}

}

將數據從磁盤上的文本文件還原到MySql中的數據庫

import java.io.*;

import java.lang.*;

/*

* 還原MySql數據庫

* */

public class Recover {

public static void main(String[] args) {

String filepath = “d:\\test.sql”; // 備份的路徑地址

//新建數據庫test

String stmt1 = “mysqladmin -u root -proot create test”;

String stmt2 = “mysql -u root -proot test ” + filepath;

String[] cmd = { “cmd”, “/c”, stmt2 };

try {

Runtime.getRuntime().exec(stmt1);

Runtime.getRuntime().exec(cmd);

System.out.println(“數據已從 ” + filepath + ” 導入到數據庫中”);

} catch (IOException e) {

e.printStackTrace();

}

}

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/239255.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:15
下一篇 2024-12-12 12:15

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論