java 实现pgsql数据库免密备份 Windows版本

news2025/7/23 22:56:29

阐述下背景:
最近公司项目中有个功能模块,需要使用java实现pgsql数据库整库的数据备份,没有pgsql使用经验的我,在网上寻找了好多大神的帖子,也没发现适合自己当前场景的解决方案,但是我把大神们的帖子按照自己的思路,整合了一下,最终终于解决了,一身轻松呀,也许这就是翻越一座困难大山后的愉悦感,只能说是很爽,坚持就是胜利。

先捋一下思路吧:
1、找到合适的备份命令:

pg_dump -h localhost -U postgres mbssdbnew > E:\postgres_db.sql

2、发现在pgsql安装路径的bin目录下cmd执行上面命令,发现需要输入密码
在这里插入图片描述

3、输入密码后可以成功备份,如下图
在这里插入图片描述
在这里插入图片描述

4、但问题来了,pg_dump命令不支持输入密码,我们在java程序里面如何实现免密备份呢?我也找了好多博主的帖子,没有发现在java执行命令里面输入密码完成备份的案例。但是发现还有另外一种方式可以实现免密方式,那就是通过配置文件.pgpass的方式实现,网上的帖子大多都是linux环境里如何操作配置文件的,我想法找到了windows中.pgpass的存在形态为:
以win10为例,文件路径为:
C:\Users\用户名\AppData\Roaming\postgresql\pgpass.conf,如下图:
在这里插入图片描述
在Roaming目录下新建postgresql目录,并新建pgpass.conf配置文件,将要免密备份的数据库信息放到其中:
localhost:5432:需要备份的数据库:用户名:你的密码

在这里插入图片描述

5、建好配置文件后,无需重启数据库,直接上代码,发现备份成功!豁然开朗呀老铁。代码拿去不谢。

public static void main(String[] args) throws IOException {
        List<String> command = new ArrayList<String>();
        command.add("D:\\dev_tools\\postgresql\\bin\\pg_dump");
        command.add("-h");
        command.add("localhost");
        command.add("-U");
        command.add("postgres");
        command.add("-d");
        command.add("mbssdbnew");
        command.add("-f");
        command.add("E:\postgres_db.sql");

        try {
            ProcessBuilder pb = new ProcessBuilder(command).redirectErrorStream(true);
            Process process = pb.start();
            BufferedReader r = new BufferedReader(
                    new InputStreamReader(process.getInputStream(), "gbk"));
            String line = r.readLine();
            while (line != null) {
                System.err.println(line);
                line = r.readLine();
            }
            r.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

最后每日一语:但行好事,莫问前程。

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

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

相关文章

某开源远程办公软件安装配置说明

******是开源软件&#xff0c;只需要简单的配置&#xff0c;就可以在企业搭建SSL VPN&#xff0c;满足日常远程办公的需求。本篇文档为在windows服务器安装搭建openvpn记录&#xff0c;仅供参考。 拓扑说明 使用虚拟机进行测试&#xff0c;主机操作系统Windows 10和m0n0。模拟…

【Java|golang】1247. 交换字符使得字符串相同

有两个长度相同的字符串 s1 和 s2&#xff0c;且它们其中 只含有 字符 “x” 和 “y”&#xff0c;你需要通过「交换字符」的方式使这两个字符串相同。 每次「交换字符」的时候&#xff0c;你都可以在两个字符串中各选一个字符进行交换。 交换只能发生在两个不同的字符串之间…

JavaEE简单示例——MyBatis的缓存机制

简单介绍&#xff1a; 缓存机制的存在&#xff0c;是为了当我们在执行重复的SQL代码的时候&#xff0c;不需要重新向数据库进行访问&#xff0c;而是将之前查询的结果存放在内存当中&#xff0c;从而减少我们重复的获取数据库连接进行查询时候消耗的资源&#xff0c;是一种加快…

内容产品项目作品 || 项目背景及需求分析(一)

一、项目背景介绍 如果让大家来做一个没接触过的产品&#xff0c;思路&#xff1a; 先了解产品所在的行业&#xff0c;多看看第三方的行业研究的文章了解产品的主要竞品&#xff0c;这样做产品设计的时候不会乱搞 常见的内容产品形态&#xff1a;图文、音视频、直播等 二、…

走!来学习配置基于IP子网划分VLAN

划分VLAN的方式有&#xff1a;基于接口、基于MAC地址、基于子网、基于协议、基于策略&#xff08;MAC地址、IP地址、接口&#xff09; 基于IP子网划分VLAN经常适用于对安全需求不高、对移动性和简易管理需求较高的场景中。比如&#xff0c;一台PC配置多个IP地址分别访问不同网段…

Traefik v2.9-IngressRoute

文章目录简介资源交付创建CRD和RBAC创建ConfigMap创建Deployment创建Service创建traefik-dashboard-ingressroute简介 The Kubernetes Ingress Controller, The Custom Resource Way. In early versions, Traefik supported Kubernetes only through the Kubernetes Ingress …

Android SurfaceTexture说明

what 1. SurfaceTexture用来捕获视频流中的图像帧&#xff0c;视频流可以是相机预览或者是视频解码数据。 里边承接图像数据的也是GraphicBuffer, GLConsumer 作为其BufferQueue的消费方&#xff0c;取得数据后可以通过eglImage挂到opengles texture 里边对其做纹理采样。 ho…

学习笔记三:容器,镜像相关操作,并部署nginx

这里写目录标题镜像相关命令从dockerhub查找镜像容器相关操作以交互式方式启动并进入容器以守护进程方式启动容器查看正在运行的容器通过docker部署nginx服务在docker里安装nginx创建静态页面访问docker里的nginx服务流量走向&#xff1a;镜像相关命令 从dockerhub查找镜像 d…

mTip 输入法状态跟踪提示 ,可以更改热键等

ImTip ( 输入法状态跟踪提示 )最新版本是 v4.4 :免费开源&#xff0c;仅 715 KB。单文件绿色软件&#xff0c;无任何外部依赖&#xff0c;兼容 XP&#xff0c;Vista&#xff0c;Win7&#xff0c;Win8&#xff0c;Win10&#xff0c;Win11 …… 等所有流行桌面操作系统。源代码: …

Java设计模式笔记——六个创建型模式

系列文章目录 Java设计模式笔记——七大设计原则 文章目录系列文章目录一、简单工厂模式1.概念2.案例分析3.使用简单工厂模式进行改进4.总结二、工厂方法模式1.概念2.案例分析3.使用工厂方法模式进行改进4.总结三、抽象工厂模式1.概念2.案例分析3.使用抽象工厂模式改进4.总结四…

跨端技术或许是提升软件运维效率的利器

凡是代码&#xff0c;难免有 bug。 开发者们的日常&#xff0c;除了用一行行代码搭产品外&#xff0c;便是找出代码里的虫&#xff0c;俗称 debug。 ​随着移动互联网的快速发展&#xff0c;App 已经成为日常生活中不可或缺的一部分。但是在开发者/运维人员的眼里简直就是痛苦…

Win YAPI + Jenkins 实现接口自动化测试

自动化测试 传统的接口自动化测试成本高&#xff0c;大量的项目没有使用自动化测试保证接口的质量&#xff0c;仅仅依靠手动测试&#xff0c;是非常不可靠和容易出错的。 为了解决这个问题&#xff0c;使用YAPI接口自动化测试功能&#xff0c;只需要配置每个接口的入参和对 RE…

网络类型以及数据链路层协议

网络类型以及数据链路层协议网络类型是根据我们数据链路层所运行的协议及规则来划分网络类型的分类P2P --- 点到点 --- point to pointMA --- 多点接入网络BMA --- 广播型多点接入网络NBMA --- 非广播型多点接入网络数据链路层协议MA网络以太网协议特点&#xff1a;需要使用MAC…

Java代码弱点与修复之——Explicit null dereferenced(显式空间接引用)

弱点描述 Explicit null dereferenced, 显示空间接引用。是 Coverity 静态代码分析工具检测到的一种中风险缺陷。这种缺陷通常发生在尝试使用空指针引用调用对象上的方法或访问属性时。 Explicit null dereferenced的缺陷可能会导致程序崩溃或产生不可预测的结果。 在Java语…

0102 MySQL05

1.约束 1.约束&#xff08;constraint&#xff09;&#xff1a;在创建表时&#xff0c;可以给表中的字段加上一些约束&#xff0c;保证表中数据的完整性&#xff0c;有效性 常见的约束&#xff1f; 非空约束&#xff1a;not null 唯一性约束&#xff1a;unique 主键约束&am…

在VM16.X虚拟机上安装Android-X86 9.0

前提&#xff1a;电脑已安装好VM虚拟机&#xff0c; 第一步&#xff1a;下载好安卓9.0系统 https://www.fosshub.com/Android-x86.html 第二步&#xff1a;开始安装 1、新建虚拟机&#xff08;按图片上的点一下步&#xff09; 点浏览&#xff0c;确定虚拟机位置 处理器配置建…

深度剖析C语言预处理

致前行的人&#xff1a; 人生像攀登一座山&#xff0c;而找寻出路&#xff0c;却是一种学习的过程&#xff0c;我们应当在这过程中&#xff0c;学习稳定冷静&#xff0c;学习如何从慌乱中找到生机。 目录 1.程序翻译过程&#xff1a; 2.字符串宏常量 3.用宏定义充当注释符号 4…

【笔记】若依不分离的$.modal.open()打开多个子窗口,关闭子窗口刷新父窗口问题

前言 如题所述&#xff0c;当前遇到的问题是&#xff1a;我在若依不分离版的一个普通HTML页面A使用 $.modal.open()打开一个子窗口B&#xff0c;且在这个子窗口里再次使用 这个函数打开一个子窗口C&#xff0c;这时的情况就是 A 界面有子窗口 B&#xff0c; B 窗口又有一个子…

《系统架构设计》-06-面向领域思想和策略设计

文章目录1 面向领域思想1.1 架构设计与领域驱动1.1.1 领域驱动设计1.1.2 使用领域驱动设计的条件1.2 领域驱动设计核心概念1.2.1 策略维度1.2.2 技术维度2. 面向领域的策略设计2.1 通用语言2.2 领域与上下文2.2.1 架构轮回2.2.2 系统拆分子域界限上下文系统拆分策略2.2.3 上下文…

Mysql—主从复制

主从复制 创建mysql 基于docker创建2个mysql容器 1、拉取mysql镜像&#xff0c;这里拉取最新的8.0.20 docker pull mysql:latest2、使用镜像运行两个mysql容器&#xff1a;mysql 和 mysql-2 docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORDroot mysql …