mysql gunzip 远程,Java 操作mysql 导入|导出 gzip|gunzip 工具类

本文介绍了一个用于MySQL数据库操作的实用工具类,包括数据库导入和导出的功能。该工具使用Java编写,支持指定数据库IP、端口、用户名、密码及数据库名称等参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package util;

import java.io.File;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.List;

/**

* mysql数据库操作工具

*

* @author yzc 2019/12/12 上午9:55.

*/

public class MysqlDatabaseUtil {

/**

* 数据库导入

*

* @param filePath 导入文件存储位置

* @param host mysql IP

* @param port mysql port

* @param userName mysql 用户名

* @param password mysql 密码

* @param dataBaseName 数据库名称

* @return

*/

public static ControlResult importSql(String filePath, String host, String port, String userName, String password, String dataBaseName) {

try {

StringBuffer sbr = new StringBuffer();

sbr.append("gunzip < ");

sbr.append(filePath);

sbr.append(" | mysql");

sbr.append(" -u").append(userName);

sbr.append(" -p").append(password);

sbr.append(" -h").append(host);

sbr.append(" -P").append(port).append(" ");

sbr.append(dataBaseName);

Runtime rt = Runtime.getRuntime();

// 调用命令

rt.exec(new String[]{"/bin/sh", "-c", sbr.toString()});

} catch (Exception e) {

e.printStackTrace();

return ControlResult.error("操作异常,请检查数据库是否存在,或联系管理员!");

}

return ControlResult.success();

}

/**

* 数据库导出

*

* @param outputPath 导出文件存储位置

* @param host mysql IP

* @param port mysql port

* @param userName mysql 用户名

* @param password mysql 密码

* @param dataBaseName 数据库名称

* @param tableNames 表名称数组(如果有表名称,则只导出对应的数据表)

* @return

*/

public static ControlResult exportSql(String outputPath, String host, String port, String userName, String password,

String dataBaseName, List tableNames) {

//拼接导出的文件名

StringBuffer nameSbf = new StringBuffer();

try {

Runtime rt = Runtime.getRuntime();

//拼接数据库导出命令

StringBuffer sbr = new StringBuffer();

sbr.append("mysqldump");

sbr.append(" -u").append(userName);

sbr.append(" -p").append(password);

sbr.append(" -h").append(host);

sbr.append(" -P").append(port);

nameSbf.append(dataBaseName);

if (null != tableNames && tableNames.size() > 0) {

sbr.append(" -BR ");

sbr.append(dataBaseName).append(" ");

tableNames.stream().forEach(name -> {

sbr.append(name).append(" ");

nameSbf.append("_").append(name);

});

} else {

// -B 创建数据库 -R 导出函数和存储过程 sbr.append(" -BR ")

sbr.append(" -BR ").append(dataBaseName);

}

sbr.append(" | gzip ");

Date date = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmssSSS");

String now = sdf.format(date);

nameSbf.append("_" + now + ".sql.gz");

sbr.append(" > ").append(outputPath).append(nameSbf);

// 调用命令

rt.exec(new String[]{"/bin/sh", "-c", sbr.toString()});

System.out.println("================");

System.out.println(nameSbf.toString());

return ControlResult.success(nameSbf.toString());

} catch (Exception e) {

e.printStackTrace();

return ControlResult.error("操作异常,请检查数据库是否存在或联系管理员!");

}

}

public static void main(String[] args) throws InterruptedException {

//importSql("/Users/yzc/Desktop/keyManage_20191212181852073.sql.gz","127.0.0.1","3306","root","root","");

ControlResult res = exportSql("/Users/yzc/Desktop/", "localhost", "3306", "root", "root", "keyManage", null);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值