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

d2a39c252f60f009d9d3bf945f6580f7.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

数据备份对于经常在运维部署方面的工作者来说,是一件相对简单的事情,都可以通过某一个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;

}

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

欢迎关注微信公众号:摘星族,我们在等待您的加入。

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSF简单Ajax示例

今天,我们将看到一些使用JSF的Ajax简单样本。 如果要查看有关JSF / Web应用程序的其他文章,请单击以下链接: 重定向后的JSF持久化对象和消息 , 使用JAAS和JSF进行用户登录验证 , JSF:Converter and Bean Au…

常用的好用的window工具

1. FastStone Capture截图录屏软件 百度软件中心:http://rj.baidu.com/soft/detail/13504.html?ald 注册企业版: 用户名:c1ikm 注册码:AXMQX-RMMMJ-DBHHF-WIHTV 中文输入乱码解决方法: 2. Notepad文本编辑器&#xff…

python socket模块实现udp通信_Python基于socket模块实现UDP通信功能示例

Python基于socket模块实现UDP通信功能示例本文实例讲述了Python基于socket模块实现UDP通信功能。分享给大家供大家参考,具体如下:一 代码1、接收端import socket#使用IPV4协议,使用UDP协议传输数据ssocket.socket(socket.AF_INET, socket.SOC…

创建Java动态代理

Java动态代理机制提供了一种有趣的方式来创建代理实例。 不过&#xff0c;创建动态代理的步骤有些繁琐&#xff0c;请考虑将代理用于审核服务实例的方法调用所花费的时间– public interface InventoryService {public Inventory create(Inventory inventory);public List<I…

java udp丢包_linux 系统 UDP 丢包问题分析思路

最近工作中遇到某个服务器应用程序 UDP 丢包&#xff0c;在排查过程中查阅了很多资料&#xff0c;总结出来这篇文章&#xff0c;供更多人参考。在开始之前&#xff0c;我们先用一张图解释 linux 系统接收网络报文的过程。● 首先网络报文通过物理网线发送到网卡● 网络驱动程…

java lambda 多个参数_Java Lambda行为参数化

Java Lambda行为参数化我们可以将lambda表达式作为参数传递给方法。例子以下代码创建了一个名为Calculator的函数接口。在Calculator中有一个称为calculate的方法&#xff0c;它接受两个int参数并返回一个int值。在Main类中有一个引擎方法&#xff0c;它接受函数接口Calculator…

java main test_java调用main自动执行testng方法一

主方法import com.com.utlis.createTestngXml;import org.testng.TestNG;import java.util.ArrayList;import java.util.List;/*** author lw* createTime 2019/3/30 15:35* description testng调试类*/public class inittet {private static final String ESCAPE_PROPERTY &q…

ADF:动态视图对象

今天&#xff0c;我想写有关动态视图对象的文章&#xff0c;它允许我在运行时更改其数据源&#xff08;SQL查询&#xff09;和属性。 我将使用oracle.jbo.ApplicationModule :: createViewObjectFromQueryStmt方法来解决此问题。 我将逐步介绍如何执行此操作 创建视图对象和应…

java stack list_JAVA自己实现List接口Stack

package 集合.Stack;import java.util.Arrays;import java.util.EmptyStackException;import java.util.Vector;public class MyStack {//底层数组默认长度为10private Object[] myStack new Object[10];//sizeprivate int size 0;public MyStack() {}//pushpublic Object pu…

I / O神秘化

由于对高度可扩展的服务器设计的所有炒作以及对nodejs的狂热&#xff0c;我一直想重点研究IO设计模式&#xff0c;直到现在为止都没有足够的时间进行投资。 现在已经做了一些研究&#xff0c;我认为最好记下我遇到的东西&#xff0c;作为对我以及可能遇到这篇文章的任何人的未来…

java三大特性 继承_java基础(二)-----java的三大特性之继承

在《Think in java》中有这样一句话&#xff1a;复用代码是Java众多引人注目的功能之一。但要想成为极具革命性的语言&#xff0c;仅仅能够复制代码并对加以改变是不够的&#xff0c;它还必须能够做更多的事情。在这句话中最引人注目的是“复用代码”,尽可能的复用代码使我们程…

delphi用TAdoStoredProc调用存储过程,兼容sql2005、2008、2014的远程事务问题

delphi7写的程序&#xff0c;在sql2000里没问题&#xff0c;调用sql2008、2014里的存储过程时&#xff0c;如果存储过程里操作了大量数据&#xff0c;很容易会莫名其妙的自己撤销掉&#xff0c;但是程序还识别不到&#xff0c;认为还在正常执行。今天尝试换了个控件&#xff1a…

8、SpringCloud高频面试题-版本1

1、SpringCloud组件有哪些 SpringCloud 是一系列框架的有序集合。它利用 SpringBoot 的开发便利性巧妙地简化了分布式系统基础设施的开发&#xff0c;如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等&#xff0c;都可以用 SpringBoot 的开发风格做到一键启…

JavaOne 2012:Java策略主题演讲和IBM主题演讲

与 JavaOne 2010 相似&#xff0c;我对JavaOne 2012的开始也很艰难。由于“计算机和打印机技术上的困难”&#xff0c;办理登机手续的人花了70分钟为我提供JavaOne徽章。 尽管我不是世界上最有耐心的人&#xff0c;但比等待更令人失望的是&#xff0c;我错过了参加“社区会议&a…

java citymap_Java实现Map集合二级联动

Map集合可以保存键值映射关系&#xff0c;这非常适合本实例所需要的数据结构&#xff0c;所有省份信息可以保存为Map集合的键&#xff0c;而每个键可以保存对应的城市信息&#xff0c;本实例就是利用Map集合实现了省市级联选择框&#xff0c;当选择省份信息时&#xff0c;将改变…

JavaOne 2012:使用HTML5和Java构建移动应用程序

我返回了Parc 55 &#xff08;任务会议室&#xff09;&#xff0c;观看Max Katz的&#xff08; Exadel开发人员关系&#xff09;“用HTML5和Java构建移动应用程序” Bird-of-Feather&#xff08;BoF&#xff09;演示。 具体来说&#xff0c;Katz在Tiggzi &#xff08;基于云的应…

HDU 2602.Bone Collector-动态规划0-1背包

Bone Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 85530 Accepted Submission(s): 35381 Problem DescriptionMany years ago , in Teddy’s hometown there was a man who was called “Bone Col…

简单谈谈js中的MVC

MVC是什么&#xff1f; MVC是一种架构模式&#xff0c;它将应用抽象为3个部分&#xff1a;模型&#xff08;数据&#xff09;、视图、控制器&#xff08;分发器&#xff09;。 本文将用一个经典的例子todoList来展开&#xff08;代码在最后&#xff09;。 一个事件发生的过程&a…

BTrace:Java开发人员工具箱中的隐藏宝石

这篇文章是关于BTrace的 &#xff0c;我正在考虑将其作为Java开发人员的隐藏宝藏。 BTrace是用于Java平台的安全&#xff0c;动态跟踪工具。 BTrace可用于动态跟踪正在运行的Java程序&#xff08;类似于DTrace&#xff0c;适用于OpenSolaris应用程序和OS&#xff09;。 不久&am…