最近要用JAVA做一个PostgreSQL的备份功能,没想到遇到一个大坑。

在网上搜索,很快就找到一个用JAVA的Runtime.getRuntime().exec()执行cmd命令来备份的方法。

执行代码后发现,没有导出对应的SQL文件。我觉得可能是命令有问题,于是我在cmd执行了这条命令,才发现问题所在。

原来是执行命令后还要输入数据密码的,这就是我说的那个大坑。

我马上就想到再用Runtime.getRuntime()执行一遍密码不就得了?但是结果果然不出所料,报错了。

于是又网上查,JAVA怎么执行交互式的cmd命令。让我查到可以获取上一个命令的OutputStream,然后用OutputStream写入密码。

于是把代码改成下面这样:

执行并没有报错,但是还是没有生成对应的SQL文件。

于是继续网上查,结果都找不到JAVA执行cmd备份PostgreSQL怎么来输入密码。

然后我决定转换思路,既然不知道怎么输入密码,那干脆查一下pg_dump免密码导出。果然找到了。那就是在环境变量里加上PGPASSWORD。

然后在cmd窗口执行导出命令,不用输入密码,成功导出。

但在很不幸,代码执行的时候,还是没有生成对应的SQL文件。难道是代码里执行不认这个环境变量?

本以为就一直卡在密码这里过不去了,没想到让我发现了另一个类ProcessBuilder。这个类也能执行cmd命令。于是把Runtime.getRuntime()全部换成ProcessBuilder。然后执行代码。

结果依然是那么的不出所料,没有生成对应的SQL文件。

不过幸好我鼠标多滚了两下,在ProcessBuilder类的API页面。被我看到了一个environment()方法。

就是environment()可以设置环境变量,于是我把刚刚的免密导出环境变量PGPASSWORD用ProcessBuilder类来设置。

然后执行代码,我对这次执行的结果并没抱多大希望。

但是结果依旧是那么的不出所料

导出成功了!

postgresql 备份 java_用JAVA执行CMD命令备份PG数据库,解决需要输入口令的问题相关推荐

  1. java -version cmd_java如何运行步骤cmd?Java执行cmd命令方法有哪些?

    写好一个java程序之后,我们的最终目的就是可以正确的运行程序,如果程序运行正确了,那么代码也就没有什么问题了,可是java如何运行步骤cmd?接下来,我们就来给大家讲解一下这方面的内容. 1.首先用 ...

  2. java执行cmd命令,返回结果中文乱码问题解决

    java执行cmd命令,返回结果中文乱码问题解决 参考文章: (1)java执行cmd命令,返回结果中文乱码问题解决 (2)https://www.cnblogs.com/kwaitfort/p/90 ...

  3. java执行cmd命令并获取返回结果字符串

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java执行cmd命令并获取返回结果字符串 测试代码 public static void main(String[] args) {String ...

  4. Java执行cmd命令

    Java执行cmd命令 1.Java执行cmd 2.Java执行Bat 3.Java执行exe 4.Java执行快捷图标 5.查看log 6.报警 1.Java执行cmd public void ex ...

  5. Java执行cmd命令启动进程

    Java执行cmd命令启动进程 1.代码 //execute command through java applicationpublic static void exeCmd(){Runtime r ...

  6. java 执行 cmd 命令(转)

    原文出处:http://blog.csdn.net/saindy5828/article/details/11975527 用JAVA代码实现执行CMD命令的方法 java的Runtime.getRu ...

  7. java执行CMD命令,文件路径或文件名带空格处理

    在java中执行CMD命令,文件路径或文件名带空格处理,按照其他人的在全路径添加双引号,执行会进入C盘,后尝试将双引号添加至对应有空格的文件路径或文件名上,进行反斜杠转义,执行OK,代码如下: pac ...

  8. java执行cmd命令 cd_Windows的cmd中cd指令切换路径

    Windows的cmd中cd指令无法转换路径怎么办? 1,首先我们看看盘符,我的电脑里有 C D E盘. 2,按下WIN+R键 输入cmd,打开cmd窗口. 3,默认路径为用户文档路径,如果想切换到D ...

  9. java怎么用doss窗口,java执行cmd命令

    Java调用系统命令或可执... 3页 免费 喜欢此文档的还喜欢 Java远程方法调用 44页 1下载券 JAVA模块间调用 27页 2下载券 java调用CMD命令方法详解... ...... Wi ...

最新文章

  1. 【JQuery】可直接编辑的表格
  2. JQ实现情人节表白程序
  3. 扫雷win10_室友玩扫雷通关,在我面前装逼?不存在!用Python开发自动扫雷,五秒通关!...
  4. 史上最真实的网络飙车游戏
  5. IP-MAC绑定到底有多重要?(白目的见解)
  6. 元宇宙PlatoFarm万众瞩目,同时登录HUOBI等全球四大平台
  7. C# WinForm开发 GMap离线地图
  8. 形式化方法 Assignment 2: Proof engineering
  9. 好佳居软装十大品牌 每个人都有着适合自己的软装
  10. 机器学习VS深度学习,两者区别在哪里?
  11. Linux下mysql 登录退出及常用命令
  12. html做网页 窗口最小化后,40种网页常用小技巧
  13. highCharts图表应用-模拟心电图
  14. 学习git的第一节课
  15. 【转】富士通磁共振无线充电技术,几米外可充电
  16. js数组置顶元素(将某一项移到首位)
  17. 习惯养成微信小程序的设计与实现
  18. 电脑上经常出现弹窗广告怎么办?教你3种方法,永久关闭
  19. 历年奥运比赛数据 API 接口
  20. AutoHotKey的那些事儿:(七)、AutoHotkey程序在win8下不能运行的解决办法

热门文章

  1. 邀请函丨云和恩墨邀您一起迈向混合数据库时代!
  2. MySQL 8.0 安装部署3个注意事项
  3. 如何“暴力破解”Oracle性能优化的极端问题(附精彩案例解读)
  4. 带你认识传统语音识别技术
  5. 论文解读丨基于局部特征保留的图卷积神经网络架构(LPD-GCN)
  6. 华为云FusionInsight MRS:千余节点滚动升级业务无中断
  7. 一文带你了解数据中心大二层网络演进之路
  8. 【Python3网络爬虫开发实战】1.2.3-ChromeDriver的安装
  9. ubuntu php mysql apache_Ubuntu+Apache+PHP+Mysql环境搭建(完整版)(转)
  10. Head First设计模式读书笔记八 第九章下 组合模式