自定义一个Listener,每天在特定时间备份数据库:
public class AutoBackUpListener implements ServletContextListener{
private Timer timer;
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("shut down task.");
timer.cancel(); //Terminate the timer thread
}
public void contextInitialized(ServletContextEvent arg0) {
timer = new Timer();
System.out.println("begin task.");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 03);// 3:30 am 备份数据库
calendar.set(Calendar.MINUTE, 30);
calendar.set(Calendar.SECOND, 0);
Date time = calendar.getTime();
timer = new Timer();
//timer.schedule(new RemindTask(), time);
timer.scheduleAtFixedRate(new Beifen(), time, 1000*60*60*24);//每天执行一次
}
class Beifen extends TimerTask {
private String user_name;//数据库用户名
private String user_psw;//数据库密码
private String db_name;// 需要备份的数据库名
private String host_ip;
private String user_charset;
private String backup_path; //存放备份文件的路径
private String stmt;
public Beifen(){}
public Beifen(String user_name,String user_psw,String db_name,String host_ip,String user_charset,String backup_path){
this.user_name=user_name;
this.user_psw=user_psw;
this.db_name=db_name;
//主机IP;
if(host_ip==null||host_ip.equals(""))
this.host_ip="localhost";//默认为本机
else
this.host_ip=host_ip;
//字符集
if(user_charset==null||user_charset.equals(""))
this.user_charset=" "; //默认为安装时设置的字符集
else
this.user_charset=" --default-character-set="+user_charset;
this.backup_path=backup_path;
/*this.stmt="C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\mysqldump "+this.db_name+" -h "+this.host_ip+" -u"+this.user_name+" -p"+this.user_psw
+this.user_charset+" --result-file="+this.backup_path; */
this.stmt="D:\\AppServ\\MySQL\\bin\\mysqldump "+this.db_name+" -h "+this.host_ip+" -u"+this.user_name+" -p"+this.user_psw
+this.user_charset+" --result-file="+this.backup_path;
}
public boolean backup_run(){
boolean run_result=false;
try{
Runtime.getRuntime().exec(this.stmt);
run_result=true;
}catch(Exception e){
e.printStackTrace();
}finally{
return run_result;
}
}
@Override
public void run() {
Beifen backup=new Beifen("root","root","tansuo_mobile",null,"utf8","d:\\tansuo_moblie.sql");
boolean result=backup.backup_run();
if(result)
System.out.println("备份成功");
}
}
}
使用jsp 流从服务器下载该sql文件:
<%@ page language="java" pageEncoding="utf-8"%>
<%@ page import="java.io.OutputStream,java.io.File,java.io.FileInputStream"%>
<%@page import="java.io.PrintWriter"%>
<html>
<head>
<title>JSP流文件下载</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<%
response.reset();
OutputStream o =response.getOutputStream();
byte b[]=new byte[500];
String path = "d:\\tansuo_moblie.sql"; //要下载的文件路径
String myName = "数据库备份.sql"; //默认保存的名字
//String path = request.getSession().getServletContext().getRealPath("/");
// if(path.endsWith("\\"))
//{
// path+="upload\\excelfiles\\TransInfo.xls";
//}
//else
//{
// path+="upload\\excelfiles\\TransInfo.xls";
//}
File fileLoad=new File(path);
response.reset();
response.setCharacterEncoding("GBK");
request.setCharacterEncoding("GBK");
response.setContentType("application/octet-stream; charset=GBK");
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(myName.getBytes("gb2312"),"iso8859-1") + "\"");
long fileLength=fileLoad.length();
String length=String.valueOf(fileLength);
response.setHeader("Content_Length",length);
FileInputStream in=new FileInputStream(fileLoad);
int n=0;
while((n=in.read(b))!=-1){
o.write(b,0,n);
}
in.close();
o.close();
%>
</body>
</html>
分享到:
相关推荐
通过以上步骤,我们可以构建一个简单的Java程序,实现从数据库读取表数据并转换为SQL文件的功能。不过,实际项目中可能需要考虑更多因素,如性能优化、事务处理、错误重试等。请确保在操作数据库时遵守最佳实践,以...
在Java编程中,调用MySQL命令来导入和导出数据库是一种常见的操作,这涉及到数据库管理、数据迁移或者备份恢复等场景。在这个过程中,Java通过JDBC(Java Database Connectivity)接口与MySQL进行交互,利用MySQL...
总结来说,"JavaGUI工具:导出Oracle数据库脚本"涉及到的关键技术包括: 1. Java GUI设计:使用Swing或JavaFX构建用户界面。 2. JDBC:与Oracle和MS SQL Server数据库建立连接,执行SQL查询。 3. 数据库操作:获取表...
本文将深入探讨如何使用Java进行数据库应用程序编程,特别是关于创建和管理数据库脚本的实践指南。我们将主要关注Java与Oracle数据库的交互,因为压缩包中的文件名"OracleScripts"暗示了我们讨论的是Oracle数据库的...
2. SQL脚本:通过执行SQL语句(如`DESCRIBE`或`SHOW CREATE TABLE`)获取表结构,然后利用编程语言(如Python、Java)解析结果并生成Word文档。 3. 第三方工具:市面上有一些专门的数据库文档生成工具,它们可以...
使用java把数据库数据导出生成xml文件 使用java把数据库数据导出生成xml文件
此软件用于把数据库里的数据导出为指定数据库类型的insert语句,用于数据备份或迁移到另一个数据库, 大文本和二进制字段被忽略。 当前支持oracle、sybase、mysql和ms sqlServer数据库。 你可以修改参数文件、增加新...
总结来说,"基于SSH框架的mysql数据库导出脚本"涵盖了Java Web开发中的数据库操作、脚本编写以及数据管理等多个方面。理解并掌握这些知识点对于开发者在实际工作中进行数据备份和恢复有着重要意义。
《Java数据库结构导出工具详解》 在信息技术领域,数据库管理是至关重要的组成部分,而数据库结构的导出工具则是数据库管理中的实用利器。本文将详细探讨一个基于Java编写的数据库结构导出工具,该工具旨在帮助...
【Java代码 MySql导出到SqlLite】是一种技术实践,它涉及到使用Java编程语言来实现一个功能,该功能能够将MySQL数据库中的数据高效地导出到SQLite数据库文件中。这一过程通常用于数据迁移、备份或者在不同环境之间...
这种备份通常涉及导出数据库的结构和数据,以便在需要时可以恢复到某个特定时间点的状态。在Java中实现这个功能,我们需要了解以下几个关键知识点: 1. **JDBC(Java Database Connectivity)**:JDBC是Java中用于...
在Java编程环境中,将数据库中的数据导出到Excel文件是一项常见的任务,特别是在数据分析、报表生成或数据备份等场景。这个项目提供了完整的解决方案,包括必要的jar包支持数据连接。以下是关于这个主题的一些关键...
前言:我们在学习了Java各种基础知识之后,最需要做的就是学会应用,开发一些项目把所学的知识应用起来,下面的这个《校园在线考试系统》实战项目就是比较好的练手教程。 业务描述:根据前面所做的需求分析及用户的...
基于java开发的音乐库管理系统源码+数据库脚本(数据库课程设计).zip 基于java开发的音乐库管理系统源码+数据库脚本(数据库课程设计).zip 基于java开发的音乐库管理系统源码+数据库脚本(数据库课程设计).zip 开发...
这个"asp将EXCEL导入导出数据库原程序"提供了一个解决方案,能够方便地将Excel中的数据存入MSSQL数据库,同时也能将数据库中的数据导出到Excel文件。 首先,我们需要了解如何使用ASP连接MSSQL数据库。通常,这涉及...
"导出数据库表结构(excel)程序"是一个实用工具,它允许用户将数据库中的表结构转换成Excel格式,以便于数据分析、共享或离线查看。这个程序简化了从数据库提取信息的过程,并使非技术人员也能理解和操作这些数据。 ...
2. **SQL脚本生成**:为了备份数据库,程序可能需要生成SQL导出脚本,这将包含CREATE TABLE语句以及数据INSERT语句。 3. **数据导出**:使用生成的SQL脚本,程序可以逐条读取并记录数据,然后将这些记录保存到文件...
一旦配置完成,可以使用如下的命令导出数据库: ```bash mysqldump -h localhost -u root -p test > E:/test.sql ``` 其中: - `-h localhost` 指定服务器地址,这里是本地主机。 - `-u root` 指定数据库用户名。 ...
总结来说,这个场景涉及到了Linux下的shell脚本编写,主要是使用`exp`命令导出Oracle数据库中的数据,并通过Java程序来调用这个脚本。这在日常的运维工作中非常常见,通过这种方式可以实现自动化数据备份,提高工作...