本文目錄一覽:
- 1、如何將xml格式文件導入mysql中
- 2、如何用Java實現MySQL資料庫的備份和恢復
- 3、windows下Mysql 怎樣備份和還原?
- 4、怎麼備份和還原mysql資料庫
- 5、xml實時同步mysql資料庫
如何將xml格式文件導入mysql中
舉例說明如下
xml文件名為: text.xml
xml數據文件的結構如下:
node1
node2 name=”abc”123/node2
/node1
sql命令如下:
SET @xml = LOAD_FILE(‘text.xml’); — 要指定完整的文件位置
SELECT ExtractValue(@xml, ‘/node1/node2/@name’) as name,ExtractValue(@xml, ‘/node1/node2’) as data;
返回數據結果就是:
name | data
abc | 123
如何用Java實現MySQL資料庫的備份和恢復
MySQL的一些前台工具是有備份恢復功能的,可是如何在我們的應用程序中實現這一功能呢?本文提供了示例代碼來說明如何使用Java代碼實現MySQL資料庫的備份恢復。
本次實現是使用了MySQL資料庫本身提供的備份命令mysqldump和恢復命令mysql,在java代碼中通過從命令行調用這兩條命令來實現備份和恢復。備份和恢復所使用的文件都是sql文件。
本代碼是參照網上某網友提供的源碼完成的。
[java] view plaincopy
package xxx.utils;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
/**
* MySQL資料庫的備份與恢復 缺陷:可能會被殺毒軟體攔截
*
* @author xxx
* @version xxx
*/
public class DatabaseBackup {
/** MySQL安裝目錄的Bin目錄的絕對路徑 */
private String mysqlBinPath;
/** 訪問MySQL資料庫的用戶名 */
private String username;
/** 訪問MySQL資料庫的密碼 */
private String password;
public String getMysqlBinPath() {
return mysqlBinPath;
}
public void setMysqlBinPath(String mysqlBinPath) {
this.mysqlBinPath = mysqlBinPath;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public DatabaseBackup(String mysqlBinPath, String username, String password) {
if (!mysqlBinPath.endsWith(File.separator)) {
mysqlBinPath = mysqlBinPath + File.separator;
}
this.mysqlBinPath = mysqlBinPath;
this.username = username;
this.password = password;
}
/**
* 備份資料庫
*
* @param output
* 輸出流
* @param dbname
* 要備份的資料庫名
*/
public void backup(OutputStream output, String dbname) {
String command = “cmd /c ” + mysqlBinPath + “mysqldump -u” + username
+ ” -p” + password + ” –set-charset=utf8 ” + dbname;
PrintWriter p = null;
BufferedReader reader = null;
try {
p = new PrintWriter(new OutputStreamWriter(output, “utf8”));
Process process = Runtime.getRuntime().exec(command);
InputStreamReader inputStreamReader = new InputStreamReader(process
.getInputStream(), “utf8”);
reader = new BufferedReader(inputStreamReader);
String line = null;
while ((line = reader.readLine()) != null) {
p.println(line);
}
p.flush();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
if (p != null) {
p.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 備份資料庫,如果指定路徑的文件不存在會自動生成
*
* @param dest
* 備份文件的路徑
* @param dbname
* 要備份的資料庫
*/
public void backup(String dest, String dbname) {
try {
OutputStream out = new FileOutputStream(dest);
backup(out, dbname);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
/**
* 恢復資料庫
*
* @param input
* 輸入流
* @param dbname
* 資料庫名
*/
public void restore(InputStream input, String dbname) {
String command = “cmd /c ” + mysqlBinPath + “mysql -u” + username
+ ” -p” + password + ” ” + dbname;
try {
Process process = Runtime.getRuntime().exec(command);
OutputStream out = process.getOutputStream();
String line = null;
String outStr = null;
StringBuffer sb = new StringBuffer(“”);
BufferedReader br = new BufferedReader(new InputStreamReader(input,
“utf8”));
while ((line = br.readLine()) != null) {
sb.append(line + “/r/n”);
}
outStr = sb.toString();
OutputStreamWriter writer = new OutputStreamWriter(out, “utf8”);
writer.write(outStr);
writer.flush();
out.close();
br.close();
writer.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 恢復資料庫
*
* @param dest
* 備份文件的路徑
* @param dbname
* 資料庫名
*/
public void restore(String dest, String dbname) {
try {
InputStream input = new FileInputStream(dest);
restore(input, dbname);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Configuration config = HibernateSessionFactory.getConfiguration();
String binPath = config.getProperty(“mysql.binpath”);
String userName = config.getProperty(“connection.username”);
String pwd = config.getProperty(“connection.password”);
DatabaseBackup bak = new DatabaseBackup(binPath, userName, pwd);
bak.backup(“c:/ttt.sql”, “ttt”);
bak.restore(“c:/ttt.sql”, “ttt”);
}
}
最後的main方法只是一個簡單的使用方法的示例代碼。
本人所做的項目是使用了hibernate的,而這裡需要提供MySQL的bin路徑和用戶名、密碼,而hibernate.cfg.xml中本身就是需要配置資料庫的用戶名和密碼,所以我把MySQL的bin路徑也直接配置到了這個文件裡面,也不需要創建專門的配置文件,不需要寫讀取配置文件的介面了。
如果不明白,可以去看hibernate.cfg.xml的說明,裡面是可以配置其他的property的
windows下Mysql 怎樣備份和還原?
前提是把MYSQL的安裝路徑\bin添加到系統環境變數PATH中了。
備份:mysqldump
-u
root
-p123456
kcgl
c:\20090219.sql
mysqldump
備份命令
root
用戶名(root管理員)
123456
密碼
kcgl
備份的資料庫名;
備份符號
20090219.sql
備份的文件名
還原:
mysql
-u
root
-p123456
kcgl
c:\20090219.sql
mysql
還原命令
root
用戶名(root管理員)
123456
密碼
dbcurr
備份的資料庫名;
還原符號
20090219.sql還原的文件名
注意:首先要確保你的mysql
中有kcgl這個庫,還原命令是不會自動建庫的。
mysqldump
遠程備份
mysqldump
-h
ip
-uroot
-proot
database
c:\data.sql
---------其他---------
mysqldump備份:
mysqldump
-u用戶名
-p密碼
-h主機
資料庫
a
-w
“sql條件”
–lock-all-tables
路徑
案例:
mysqldump
-uroot
-p1234
-hlocalhost
db1
a
-w
“id
in
(select
id
from
b)”
–lock-all-tables
c:\aa.txt
mysqldump還原:
mysqldump
-u用戶名
-p密碼
-h主機
資料庫
路徑
案例:
mysql
-uroot
-p1234
db1
c:\aa.txt
mysqldump按條件導出:
mysqldump
-u用戶名
-p密碼
-h主機
資料庫
a
–where
“條件語句”
–no-建表
路徑
mysqldump
-uroot
-p1234
dbname
a
–where
“tag=’88′”
–no-create-info
c:\a.sql
mysqldump按導入:
mysqldump
-u用戶名
-p密碼
-h主機
資料庫
路徑
案例:
mysql
-uroot
-p1234
db1
c:\a.txt
mysqldump導出表:
mysqldump
-u用戶名
-p密碼
-h主機
資料庫
表
案例:
mysqldump
-uroot
-p
sqlhk9
a
–no-data
————————————————-
mysqldump命令介紹
–all-databases,
-A:
備份所有資料庫
–databases,
-B:
用於備份多個資料庫,如果沒有該選項,mysql
dump
把第一個名字參數作為資料庫名,後面的作為表名。使用該選項,mysql
dum把每個名字都當作為資料庫名。
–force,
-f:即使發現sql錯誤,仍然繼續備份
–host=host_name,
-h
host_name:備份主機名,默認為localhost
–no-data,
-d:只導出表結構
–password[=password],
-p[password]:密碼
–port=port_num,
-P
port_num:制定TCP/IP連接時的埠號
–quick,
-q:快速導出
–tables:覆蓋
–databases
or
-B選項,後面所跟參數被視作表名
–user=user_name,
-u
user_name:用戶名
–xml,
-X:導出為xml文件
1.備份全部資料庫的數據和結構
mysql
dump
-uroot
-p123456
-A
F:\all.sql
2.備份全部資料庫的結構(加
-d
參數)
mysql
dump
-uroot
-p123456
-A
-dF:\all_struct.sql
3.備份全部資料庫的數據(加
-t
參數)
mysql
dump
-uroot
-p123456
-A
-tF:\all_data.sql
4.備份單個資料庫的數據和結構(,資料庫名mydb)
mysql
dump
-uroot
-p123456
mydbF:\mydb.sql
5.備份單個資料庫的結構
mysql
dump
-uroot
-p123456
mydb
-dF:\mydb.sql
6.備份單個資料庫的數據
mysql
dump
-uroot
-p123456
mydb
-tF:\mydb.sql
7.備份多個表的數據和結構(數據,結構的單獨備份方法與上同)
mysql
dump
-uroot
-p123456
mydb
t1
t2
f:\multables.sql
8.一次備份多個資料庫
mysql
dump
-uroot
-p123456
–databases
db1
db2
f:\muldbs.sql
還原部分分(1)mysql
命令行source方法
和
(2)系統命令行方法
1.還原全部資料庫:
(1)
mysql
命令行:mysql
source
f:\all.sql
(2)
系統命令行:
mysql
-uroot
-p123456
use
mydb
mysql
source
f:\mydb.sql
(2)
mysql
-uroot
-p123456
mydb
use
mydb
mysql
source
f:\multables.sql
(2)
mysql
-uroot
-p123456
mydb
source
f:\muldbs.sql
(2)
系統命令行:
mysql
-uroot
-p123456
評論
載入更多
怎麼備份和還原mysql資料庫
備份資料庫
使用mysqldump命令備份資料庫
還原資料庫
1、使用mysql命令還原資料庫
將game_backup.sql 還原至 game 資料庫:
2、使用source命令還原資料庫
如果資料庫過大,建議可以使用source命令
xml實時同步mysql資料庫
創建資料庫
選擇開始菜單中→程序→【Management SQL Server 2008】→【SQL Server Management Studio】命令,打開【SQL Server Management Studio】窗口,並使用Windows或 SQL Server身份驗證建立連接。
在【對象資源管理器】窗口中展開伺服器,然後選擇【資料庫】節點
右鍵單擊【資料庫】節點,從彈出來的快捷菜單中選擇【新建資料庫】命令。
執行上述操作後,會彈出【新建資料庫】對話框。在對話框、左側有3個選項,分別是【常規】、【選項】和【文件組】。完成這三個選項中的設置會後,就完成了資料庫的創建工作,
在【資料庫名稱】文本框中輸入要新建資料庫的名稱。例如,這裡以「新建的資料庫」。
在【所有者】文本框中輸入新建資料庫的所有者,如sa。根據資料庫的使用情況,選擇啟用或者禁用【使用全文索引】複選框。
在【資料庫文件】列表中包括兩行,一行是資料庫文件,而另一行是日記文件。通過單擊下面的【添加】、【刪除】按鈕添加或刪除資料庫文件。
切換到【選項頁】、在這裡可以設置資料庫的排序規則、恢復模式、兼容級別和其他屬性。
切換到【文件組】頁,在這裡可以添加或刪除文件組。
完成以上操作後,單擊【確定】按鈕關閉【新建資料庫】對話框。至此「新建的數據」資料庫創建成功。新建的資料庫可以再【對象資源管理器】窗口看到。
原創文章,作者:RYFN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/148471.html