首先我们要先写一个备份类
BackupDb.java
代码如下:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class BackupDb {
public BackupDb() {
}
public String backup() throws IOException {
BufferedWriter mBufWriter = null;
//建立一个BackupDb.bat文件
FileWriter fileWriter = new FileWriter("BackupDb.bat");
mBufWriter = new BufferedWriter(fileWriter);
/*
* 把数据库备份方法写入BackupDb.bat文件中。
* BackupDbUrl 是数据库备份命令。
* pg_dump.exe -U postgres -E utf8 test 备份数据库命令。
* —U postgres 数据库用户名 -E utf8 设定字符编码格式。test 数据库名
* BackupDbName 备份文件所存目录和名称,我是以备份时间命名。
*/
String BackupDbUrl = "d:\\PostgreSQL8\\bin\\pg_dump.exe -U postgres -E utf8 test >";
//取系统时间
Date NowTimes = new Date();
//将时间格式化成yyMMddhhmmss(年月日时分秒),例如200805010043 2008年5月1日0点43分。
SimpleDateFormat sdf = new SimpleDateFormat("yyMMddhhmmss");
String BackupDbName = "d:\\" + sdf.format(NowTimes) + ".sql";
mBufWriter.write(BackupDbUrl);
mBufWriter.write(BackupDbName);
mBufWriter.newLine();
mBufWriter.flush();
mBufWriter.close();
try {
Runtime.getRuntime().exec("BackupDb.bat"); //执行BackupDb.bat文件进行备份数据库
} catch (Exception e) {
e.printStackTrace();
}
return BackupDbName;
}
}
然后我们在创建一个timer类,用来定时备份时间
TimerUse.java
代码如下:
package yifeng.com.org;
import java.text.SimpleDateFormat;
import java.util.*;
import java.io.*;
public class TimerUse {
public static void main(String[] args) {
PickTask picktask = new PickTask();
picktask .start(1, 60); //每60秒执行一次
}
}
class PickTask {
private Timer timer;
public PickTask() {
timer = new Timer();
}
private TimerTask task = new TimerTask() {
public void run() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String beginDate = sdf.format(date);
String beginTime = beginDate.substring(11, 16);
System.out.println(beginDate);
BackupDb bdb=new BackupDb();
PrintLog pl=new PrintLog();
//设定备份时间
if (beginTime.equals("23:22")) {
try {
bdb.backup(); //执行文件备份
String dbName=bdb.backup().toString(); //取出备份的文件名字
String path="d:\\";
int nameNo=dbName.lastIndexOf("\\");
File file=new File(path,dbName.substring(nameNo+1, dbName.length()));
System.out.println(dbName.substring(nameNo+1, dbName.length()));
//查看文件是否存在,以判断是否备份成功,写到备份日志里
//注: 此处有点问题,明明备份成功,但是日志里却是位备份成功。不知道原因出在哪里
// 在debug的时候写到日志里的就是备份文件成功。
// 哪位高手能帮忙解决一下,在下不胜感激。
//提示:其实这里还应该做些处理,如果未备份成功就应该重新备份。
if(file.exists())
pl.WriteLog(dbName+" 备份文件成功");
else
pl.WriteLog(dbName+" 未备份成功");
} catch (FileNotFoundException e) {
System.out.println("can not find the file");
} catch (IOException e) {
e.printStackTrace();
}
}
}
};
public void start(int delay, int internal) {
timer.schedule(task, delay * 1000, internal * 1000);
}
}
最后我们在写一个简单的备份日志类:
PrintLog.java
代码如下:
package yifeng.com.org;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class PrintLog {
public PrintLog(){
}
public void WriteLog(String log) throws IOException{
BufferedWriter mbw = null;
//在D盘创建一个备份日志文件log。txt
FileWriter fileWriter = new FileWriter("D:\\log.txt",true);
mbw = new BufferedWriter(fileWriter);
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String writeTime=sdf.format(date);
mbw.write(writeTime+" "); //写入时间
mbw.write(log); //写入日志内容
mbw.newLine();
mbw.flush();
mbw.close();
}
}
http://serverbbs.ccw.com.cn/viewthread.php?tid=10754
分享到:
相关推荐
总的来说,Java备份数据库信息涉及对JDBC的熟练掌握,理解数据库特定的备份机制,以及熟悉文件操作和错误处理。通过合理设计和实现备份策略,可以确保在数据出现任何问题时,能够快速有效地恢复,从而保障业务的连续...
### Java备份数据库知识点详解 #### 一、概述 在企业级应用中,数据的安全性和完整性至关重要。为了确保数据不会因为意外情况(如硬件故障、软件错误等)而丢失,定期备份数据库成为了一项必不可少的任务。本文将...
在Java编程环境中,我们可以利用Java的定时任务框架如ScheduledExecutorService或者第三方库Quartz来实现MySQL数据库的定时备份。MySQL数据库备份通常涉及到两种主要的方法:全量备份和增量备份。全量备份是复制整个...
标题中的“自动备份数据库java源码”指的是使用Java编程语言编写的一种程序,它的主要功能是自动化执行数据库的备份任务。数据库备份是数据保护的重要环节,它可以在数据丢失或系统故障时恢复数据,确保业务连续性。...
备份数据库的基本步骤包括: 1. 连接数据库:使用JDBC建立与MySQL服务器的连接。 2. 创建备份脚本:通常,我们会使用`mysqldump`命令来生成数据库的SQL脚本,或者直接导出二进制日志文件。在Java中,可以通过`...
在IT行业中,数据库管理是至关重要的任务之一,而定期备份数据库是确保数据安全的重要环节。本文将详细讲解如何使用Java代码来实现Mysql数据库的备份。这个“通过Java代码备份Mysql数据库Demo”是一个简单的示例,...
5. **执行SQL语句**:备份数据库可能涉及到运行SQL脚本来导出数据。Java程序可以通过JDBC接口执行这些脚本,例如`mysqldump`命令可以用来导出整个数据库或者特定的表。 6. **文件操作**:为了保存备份数据,Java...
`MySqlUtil.java`可能包含与MySQL数据库交互的通用工具类,`MySqlJdbcTest.java`和`MySqlTest.java`则可能包含了具体的测试用例,比如创建触发器、执行存储过程、备份和恢复数据的代码实例。 总之,通过JDBC,Java...
### Java备份 如果你的项目中已经使用了Java,那么可以通过Java代码调用mysqldump命令来实现自动化备份。首先,需要引入一个能够执行系统命令的库,如Apache Commons Exec。以下是一个简单的示例: ```java import...
运用java程序的Runtime类来getRuntime,使用runtime的exec方法来调用cmd命令,使用cmd命令“mysqldump -u 用户名 -p密码 数据库名”来备份数据库,并使用流来保存备份文件到指定目录。
1. 使用EXP工具备份数据库:EXP工具是Oracle提供的一个命令行工具,用于将数据库导出到一个文件中。Java程序可以使用Runtime.getRuntime().exec()方法来执行EXP命令,实现数据库的备份。 2. 构建EXP命令:在Java...
2. **SQL脚本生成**:为了备份数据库,程序可能需要生成SQL导出脚本,这将包含CREATE TABLE语句以及数据INSERT语句。 3. **数据导出**:使用生成的SQL脚本,程序可以逐条读取并记录数据,然后将这些记录保存到文件...
然而,为了防止数据丢失或系统故障,定期备份数据库是非常必要的。本文将详细介绍如何使用Java进行手动备份MySQL数据库。 首先,我们需要了解Java中用于数据库操作的API,JDBC(Java Database Connectivity)是Java...
通过JAVA程序,手动备分MySql数据库。
"javacmd数据库备份"这个主题聚焦于使用Java命令行工具(javacmd)进行数据库的备份操作。Java命令行工具通常指的是通过Java虚拟机(JVM)运行的程序,这些程序可以执行特定的任务,比如与数据库交互。下面我们将...
swing界面开发的备份access数据库 可以自己选择路径 win界面操作风格
在Spring Quart定时任务中,我们可以编写一个方法,使用Java的`ProcessBuilder`或`Runtime.getRuntime().exec()`来调用`mysqldump`命令,参数包括数据库名、用户名、密码等,生成备份文件。例如: ```java Process...
- SQL Server JDBC驱动也支持执行备份数据库的T-SQL语句,例如`BACKUP DATABASE`。 5. **数据库还原** - **物理还原**:直接替换数据库文件或使用特定的恢复命令(如MySQL的`mysqlimport`或SQL Server的`RESTORE ...
本篇文章将详细介绍如何通过Java编程语言在Windows和Linux操作系统上实现对Oracle数据库的备份。 首先,理解Oracle数据库备份的基本概念是必要的。Oracle提供多种备份方式,包括物理备份(如数据文件、控制文件、...
本文将详细讲解如何使用Java来实现MySQL数据库的备份与恢复功能,以及相关的关键知识点。 首先,我们需要理解数据库备份的基本原理。备份是为了防止数据丢失,通常包括全量备份和增量备份。全量备份是指复制整个...