日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

数据库备份 java jar_Java实现数据库备份并利用ant导入SQL脚本

發布時間:2023/12/1 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库备份 java jar_Java实现数据库备份并利用ant导入SQL脚本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

數據備份對于經常在運維部署方面的工作者來說,是一件相對簡單的事情,都可以通過某一個SQL工具進行備份,但是如果在項目運行當中,我們需要對數據進行實時,或者是每隔一星期,一個月,等等進行數據的備份,這樣就需要java工具來操作備份SQL文件,目前可以通過調用mysql安裝的命令進行數據備份,另外通過Job任務調度器進行配合使用,這里技術選型為Quartz。

在下面代碼當中address為SQL腳本文件存放的地址。

其中path為mysql的安裝位置:

D:\mysql\mysql-5.6.35-winx64\bin

public MapexportDatabase(String address) {

Map resultMap = newHashedMap();try{

String path= PropertiesFileUtil.getInstance("sql").get("path");

String root= PropertiesFileUtil.getInstance("sql").get("sql.jdbc.username");

String dataBase= PropertiesFileUtil.getInstance("sql").get("sql.jdbc.dataBase");

String table= PropertiesFileUtil.getInstance("sql").get("sql.jdbc.table");

String password= PropertiesFileUtil.getInstance("sql").get("sql.jdbc.password");

String sqlName= System.currentTimeMillis() + ".sql";

Runtime rt=Runtime.getRuntime();

Process child= rt.exec(path + "mysqldump -u" + root + " -p" + password + " -R -c --set-charset=utf8 " + dataBase + " " + table + "");

InputStream in=child.getInputStream();

InputStreamReader xx= new InputStreamReader(in, "utf8");

String inStr;

StringBuffer sb= new StringBuffer("");

String outStr;

BufferedReader br= newBufferedReader(xx);while ((inStr = br.readLine()) != null) {

sb.append(inStr+ "\r\n");

}

outStr=sb.toString();

FileOutputStream fout= new FileOutputStream(address + "/" +sqlName);

OutputStreamWriter writer= new OutputStreamWriter(fout, "utf8");

writer.write(outStr);

writer.flush();

in.close();

xx.close();

br.close();

writer.close();

fout.close();

resultMap.put("result", "success");

resultMap.put("data", address + "/" +sqlName);returnresultMap;

}catch(Exception e) {

e.printStackTrace();

}

resultMap.put("result", "fail");

resultMap.put("data", "地址選擇有可能出現問題");returnresultMap;

}

上述代碼當中主要的是用到了Runtime,Runtime封裝了運行環境,每一個java運行實例都有一個Runtime類為實例,使程序能夠與其環境相接。

一般不能實例化一個Runtime對象,應用程序不能創建自己的Runtime實例,但是可以通過getRuntime的方法獲取當前Runtime運行時對象的引用。

一旦得到當前的Runtime對象的引用,就可以調用Runtime對象的方法去控制java虛擬機的狀態和行為。

執行SQL腳本,我們可以通過ant來實現,首先我們引入ant的jar包

org.apache.ant

ant

1.7.1

public MapimportDatabase(String filepath) {

Map resultMap = newHashedMap();try{

String username= PropertiesFileUtil.getInstance("sql").get("sql.jdbc.username");

String password= PropertiesFileUtil.getInstance("sql").get("sql.jdbc.password");

String url= PropertiesFileUtil.getInstance("sql").get("sql.jdbc.url");

String driverClassName=PropertiesFileUtil.getInstance("sql").get("sql.jdbc.driver");

String filepathName= filepath.substring(0, filepath.lastIndexOf("."));

String outputPath= filepathName + ".out";

SQLExec sqlExec= newSQLExec();//設置數據庫參數

sqlExec.setDriver(driverClassName);

sqlExec.setUrl(url);

sqlExec.setUserid(username);

sqlExec.setPassword(password);//設置字符編碼

sqlExec.setEncoding("UTF-8");//要執行的腳本

sqlExec.setSrc(newFile(filepath));//有出錯的語句該如何處理

sqlExec.setOnerror((SQLExec.OnError) (EnumeratedAttribute.getInstance(

SQLExec.OnError.class, "abort")));

sqlExec.setPrint(true); //設置是否輸出//輸出到文件 sql.out 中;不設置該屬性,默認輸出到控制臺

sqlExec.setOutput(newFile(outputPath));

sqlExec.setProject(new Project()); //要指定這個屬性,不然會出錯

sqlExec.execute();

logger.info("執行sql腳本文件成功");

resultMap.put("result", "success");

}catch(Exception e) {

logger.info("執行sql腳本文件失敗");

e.printStackTrace();

resultMap.put("result", "fail");returnresultMap;

}returnresultMap;

}

歡迎關注微信公眾號:摘星族,我們在等待您的加入。

?

總結

以上是生活随笔為你收集整理的数据库备份 java jar_Java实现数据库备份并利用ant导入SQL脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。