达梦数据库备份还原命令_达梦数据库安装教程

数据库 (68) 2023-09-02 21:12

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("备份数据库失败");
        }
    }

}

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

发表回复