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<String> 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);
}
}
Java 操作mysql 导入|导出 gzip|gunzip 工具类
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...