达梦数据库备份还原

news/2024/10/30 22:16:39/

最近在做一个功能,是通过Java实现数据库备份还原,查看网上存在的多个资源。之前有写过MYSQL的备份与还原,现在把我达梦数据库实现备份还原的功能代码分享出来,达梦数据库实现 备份还原过程比较难,主要是对达梦数据库不太熟悉,以下的代码希望可以帮到那些正在寻找实现数据库备份还原的人。

import java.io.*;
import java.util.Date;public class DmDatabaseBackupAndRestore {public static void resdStreamInfo(InputStream... inputStreams) {for (InputStream in : inputStreams) {new Thread(() -> {try {BufferedReader br = new BufferedReader(new InputStreamReader(in));String line = null;while ((line = br.readLine()) != null) {System.out.println("数据" + line);}} catch (IOException ex) {ex.printStackTrace();} finally {try {in.close();} catch (IOException Ex) {Ex.printStackTrace();}}}).start();}}/*** 达梦数据库备份* param filePath 文件备份路径  路径格式 D:/code/backup/ 以实际情况而定* param binPath 数据库bin路径  路径格式 D:/dm/bin/ 以实际情况而定* param ip  数据库登录IP  以实际情况而定* param databasePort  数据库登端口  以实际情况而定* param password  数据库密码  root 以实际情况而定* param databasename 数据库名称  以实际情况而定*/public static void DmDatabaseBackup(String filePath, String binPath, String ip, String databasePort, String password, String databasename) {String dirfire = filePath;File file = new File(dirfire);if (!file.exists()) {file.mkdir();}String filename = "backup_" + new Date().getTime() + ".dmp";File datafile = new File(file + File.separator + filename);if (datafile.exists()) {System.out.println("文件名已存在,请更换");}try {Runtime rt = Runtime.getRuntime();Process process = null;String IpAdd = ip + ":" + databasePort;//OWNER 对应的是要备份的用户名 String cmd = "cmd /c " + binPath + "/dexp " + databasename + "/" + password + "@" + IpAdd + " file=" + filename + " DIRECTORY=" + filePath + " OWNER=KMP";process = rt.exec(cmd);InputStream errorStream = process.getErrorStream();InputStream inputStream = process.getInputStream();resdStreamInfo(errorStream, inputStream);int i = process.waitFor();process.destroy();if (i == 0) {System.out.println("数据库备份成功");//此处可以添加代码,把以上操作的信息保存在相应的数据库中}} catch (Exception e) {System.out.println("备份数据库失败");}}/*** 达梦数据库还原* param ip       数据库连接的IP地址 如:127.0.0.1  以实际情况而定* param filePath 文件备份路径  路径格式 D:/code/backup/ 以实际情况而定* param binPath 数据库bin路径  路径格式 D:/dm/bin/ 以实际情况而定* param ip  数据库IP 以实际情况而定* param databasePort  数据库端口 以实际情况而定* param password  数据库密码  root 以实际情况而定* param databasename 数据库名称  以实际情况而定*/public static void DmDatabaseRestore(String filePath, String binPath, String filename, String ip, String databasePort, String password, String databasename) {try {Runtime rt = Runtime.getRuntime();String os = System.getProperty("os.name");String IpAdd = ip + ":" + databasePort;//达梦数据库还原   table_first=y table_exists_action=replace   TABLE_EXISTS_ACTION参数有四个选项,REPLACE:先删除现有表,再导数据String cmd = "cmd /c " + binPath + "/dimp " + databasename + "/" + password + "@" + IpAdd + " file=" + filename + " DIRECTORY=" + filePath + " table_exists_action=replace OWNER=KMP";Process restoreData = rt.exec(cmd);InputStream errorStream = restoreData.getErrorStream();InputStream inputStream = restoreData.getInputStream();resdStreamInfo(errorStream, inputStream);int i = restoreData.waitFor();restoreData.destroy();if (i == 0) {System.out.println("数据库备份成功");//此处可以添加代码,把以上操作的信息保存在相应的数据库中}} catch (Exception e) {System.out.println("备份数据库失败");}}}

http://www.ppmy.cn/news/598416.html

相关文章

SqlServer 备份还原

———————————————————————-备份——————————————————————– 1.打开数据库,成功连接 2.找到要备份的数据库,图中演示备份数据库test 3.右击数据库名称,进入属性列表,选择任务(task)&a…

mariadb数据库备份还原

Linux系统中日常运维会涉及数据库备份和还原操作,根据个人经验总结以下操作步骤。 1.mariadb数据库备份 备份全量test数据库并以gzip压缩文件存放。 [rootdatajq]# /usr/local/bin/mysqldump -uroot -p123456 test | gzip > /data/db/test.sql.gz 2.mariadb还原…

Qt6+版本下载与安装

qt6版本与qt5版本不一样的地方,是没有离线安装包。 qt6可以通过下载源码进行编译,或者下载在线安装包来进行在线安装。 各版本在线安装包下载目录: Index of /archive/online_installers qt6以上源码下载目录: Index of /arc…

【程序员面试金典】面试题 17.07. 婴儿名字

【程序员面试金典】面试题 17.07. 婴儿名字 题目描述解题思路 题目描述 描述:每年,政府都会公布一万个最常见的婴儿名字和它们出现的频率,也就是同名婴儿的数量。有些名字有多种拼法,例如,John 和 Jon 本质上是相同的…

linux 安装 Microsoft Edge 卡顿问题解决(刷新率低)

问题描述 使用linux操作系统安装 Microsoft Edge 浏览器感觉刷新率低,每次滑动页面一顿一顿的 解决方案 系统性能–使用硬件加速(如可用)–关闭或打开 我这里是关闭之后重启浏览器就好了

使用poi3.15对Excel工作簿进行分割

public void setSheetForPrint(Workbook workbook)throws Exception{/*** 处理顺序:* 1 确定现有页数,并保存 以待用于删除* 2 巡查工作簿1 获取终结列数和分割次数* 3 巡查工作簿1 并将其内容进行分割复制* 4 用第1步保存的页序号进行删除*//*1 确定现有页数,并保存 以待用于删…

Android——基本控件(下)(十五)

1. 对话框:Dialog 1.1 知识点 (1)掌握对话框的主要作用; (2)可以使用AlertDialog和AlertDialog.Builder进行对话框的建立; (3)可以通过LayoutInflater进行定制对话框…

netwox 基于 Ethernet 层构造 IP 数据包【网络工程】(保姆级图文)

目录 基于 Ethernet 层构造 IP 数据包1) 不指定选项,直接运行该模块,查看默认设置。执行命令如下:3) 验证构造的数据包,使用 Wireshark 工具捕获数据包,如图所示。其中,第 2 个数据包为构造的 IPv4 数据包。…