Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说达梦数据库备份还原命令_达梦数据库安装教程,希望能够帮助你!!!。
最近在做一个功能,是通过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("备份数据库失败");
}
}
}
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。