本文目錄一覽:
- 1、java備份mysql數據庫,求大神解答。
- 2、如何使用java程序備份和恢復MySql數據庫?
- 3、怎麼用java備份mysql數據庫?
- 4、java 備份mysql數據庫
- 5、如何用Java實現MySQL數據庫的備份和恢復
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