java備份資料庫四種方法(mysql,mssqlDatabase Backup)

來源:互聯網
上載者:User

mysqlDatabase Backup的東西,然後研究了一下java語言中怎麼來調用cmd的命令來實現mysqldump的備份功能。具體實現如下:

1.首先設定環境變數:有兩種方式。第一種,在環境變數中添加 mysql_home,設定內容為
mysql的安裝路徑,然後,在path中添加路徑 
%mysql_home%bin   
。第二種方法,不建立mysql_home,而是直接在path中添加  
mysql安裝路徑bin 。這樣,調用cmd的時候可以直接找到mysqldump和mysql命令了。

2.現在編寫java方法類來實現資料庫的備份與還原。代碼如下:
import java.io.ioexception;

public class db_deal
{       

       
private static string
str=null;       

       
public static void backup(){
               
//使用mysqldump來備份資料庫,格式"mysqldump -u username -ppassword --opt
database_name > direction/backup_name.sql"
               
str="mysqldump -u root -proot
--opt   hjh

d:/test.sql";   

               
try { 
                       
runtime rt=runtime.getruntime();
                       
rt.exec("cmd /c"+str);
               
//runtime.getruntime().exec(  
)這個方法可以實現對命令的調用。具體內容看api
               
//上面可以cmd調用控制台,然後執行str中的字串表示的命令。
                       
system.out.println("successly!");
               
} catch (ioexception e) { 
                       
e.printstacktrace(); 
                       
system.out.println("something
wrong!");               

           

               

               

       
}
       

       
public static void load(){
               
str="mysql -u root -proot j2603 
<  d:/test.sql";
               
// mysql命令可以實現資料庫的還原。格式"mysql -u username 
-ppassword  
database_name    
<    
back_up_dir  "
               
runtime rt=runtime.getruntime();
               
try {
                       
rt.exec("cmd /c"+str);
                       
system.out.println("restore successly!");
               
} catch (ioexception e) {
                       
e.printstacktrace();
                       
system.out.println("restore fail!");
               
}
       
}
}

3.最後要備份的地方給這個類執行個體化,然後調用backup(),load()來實現mysql資料庫的簡單備份跟還原

//下面來看看備份mssql資料庫代碼

string
webtruepath=getservletcontext().getrealpath(request.getservletpath());//取servlet的真實路徑

java.io.file file=new java.io.file(webtruepath);
file=file.getparentfile();
string
path=file.getpath()+"/../web-inf/lib/"+name+".dbbak";//name檔案名稱

string baksql="backup database school to disk=? with
init";//sql語句
java.sql.preparedstatement
bak=dbs.getconnection().preparestatement(baksql);
bak.setstring(1,path);//path必須是絕對路徑
if(!bak.execute())over="備份成功";
else over="備份失敗";
bak.close();
資料庫恢複
if(!dbs.close()){
                   
over="關閉所有連結失敗";
}else{
                   
string
webtruepath=getservletcontext().getrealpath(request.getservletpath());

                   
java.io.file file=new java.io.file(webtruepath);
                   
file=file.getparentfile();
                   
string path=file.getpath()+"/../web-inf/lib/"+name;
                   
string resql="restore database school from disk=? with
replace";
                   
class.forname(dbinf.getdriverclassname());
                   
java.sql.connection
con=drivermanager.getconnection(dbinf.getmester());
                   
java.sql.preparedstatement
restmt=con.preparestatement(resql);
                   
restmt.setstring(1,path);//path必須是絕對路徑
                   
if(!restmt.execute())over="恢複成功";
                   
else over="恢複失敗";
                   
restmt.close();
                   
con.close();
}

恢複的時候,有點煩,要關閉所有與資料庫的串連,這裡我連的是mestar,其實可以
jdbc:microsoft:sqlserver://localhost:1433;user=username;password=pass

串連資料庫伺服器,不連指定的資料庫.這樣也可以

原文:http://blog.sina.com.cn/s/blog_67af0caa0100lgxm.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.