白雨青工作站:www.byqws.com
一直想寫一個定時執行的資料庫備份工具,今天抽時間上網查了相關資料後,實作了一下
import java.io.File;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class BackupDataBase {
public void Backup(String back_path,String dbname){
String name =dbname+"-backup-"+ new SimpleDateFormat("yyyy-MM-dd-HHmmssSSS").format(new Date()); //檔案名
File file = new File(back_path);
String path = file.getPath() + File.separator + name + ".bak";// name檔案名
String bakSql = "BACKUP DATABASE "+dbname+" TO DISK=N'"
+ path + "'"
+ " WITH NOFORMAT, NOINIT, NAME=N'database_test-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS=10";
Connectionfactory c = new Connectionfactory();
Connection conn = c.getconn();
PreparedStatement ps;
try {
ps = conn.prepareStatement(bakSql.toString());
ps.execute();
System.out.println("資料庫備份成功!");
System.out.println("資料庫備份路徑:"+path);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("資料庫備份失敗!");
}
}
public static void main(String[] args){
BackupDataBase b = new BackupDataBase();
String back_path = args[0];
String dbname = args[1];
System.out.println("back_path:"+back_path);
System.out.println("dbname:"+dbname);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設定日期格式
long begin = new Date().getTime();
System.out.println("開始備份資料庫:"+dbname);
System.out.println("開始時間:"+df.format(new Date()));
b.Backup(back_path,dbname);
long end = new Date().getTime();
System.out.println("結束時間:"+df.format(new Date()));
System.out.println("用時多少秒:"+(end - begin)/1000);
}
}
SQL server 的連結類這裡就不放出來了
打包好後生成jar檔案,寫好bat檔案,友善後面的定時執行。
bat 代碼:
@echo off
echo 目前CMD預設目錄:%cd%
echo 檔案路徑:%cd%
::運作jar檔案 後跟的幾個參數 1、備份路徑 2、備份資料庫
%cd%\jre\bin\java -jar BackupDataBaseV1.1.jar "F:\\資料庫備份\\POSERP" "POSERP"
::pause
執行界面: