mysqldump导出远程的数据库表(在java代码中实现)
在cmd中实现
cd C:\Program Files\MySQL\MySQL Server 5.7\bin mysqldump -h rm-uf6zo8z5h35md5f492o.mysql.rds.aliyuncs.com -u dahua1 -pdahua@2022 shdhv3_a8892 dh_user_info --set-gtid-purged=off > /dev/null > F:\temp\dh_user_info.sql |
--set-gtid-purged=off(取消导出的文件中SET @MYSQLDUMP_TEMP_LOG_BIN的命令)
> /dev/null(取消导出的文件中mysqldump: [Warning] Using a password on the command line interface can be insecure的警告)
2.在java代码中实现
> /dev/null在cmd中可以取消导出的文件中Using a password的警告,在java代码中不行。
(1)先创建一个文件my.cnf(文件名随意),我的在F:\temp文件夹下
[client] user=dahua1 password=dahua@2022 host=rm-uf6zo8z5h35md5f492o.mysql.rds.aliyuncs.com |
(2)Java代码
public void t1(String dbName,String tableName) {try {ProcessBuilder builder = new ProcessBuilder("C:\\Program Files\\MySQL\\MySQL Server 5.7\\bin\\mysqldump.exe","--defaults-file=F:\\temp\\my.cnf", // 使用配置文件dbName,tableName,"--set-gtid-purged=off");builder.redirectOutput(new File("F:\\temp\\"+tableName+".sql"));builder.redirectErrorStream(true);// 启动进程并读取输出Process process = builder.start();try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"))) {reader.lines().forEach(System.out::println);}// 检查执行结果if (process.waitFor() == 0) {System.out.println("命令执行成功");}} catch (Exception e) {e.printStackTrace();} } |