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);
}
}
打包好后生成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
分类:JAVA, 程序笔记
标签:Java, SQL Server