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);

}

}

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

  1. Java操作Excel导入导出(EasyExcel)

    在管理一个系统时,总会有许多的数据,为了方便浏览查看数据,系统总会提供「导出Excel」的功能:有导出就有导入,在要向数据库中插入大量的数据时,我们向程序提供准备好的 Excel,然后程序读取表格内容 ...

  2. 几行代码就能实现复杂的 Excel 导入导出,这个工具类真心强大!

    点击关注公众号,实用技术文章及时了解 功能介绍 IMPORT ExcelHandle 核心处理器 ExcelWorkbookManage excel所有工作表管理 ExcelInitConfig 配置 ...

  3. MySQL数据库中导入导出方法以及工具介绍

    MySQL数据库中导入导出方法以及工具介绍 1.MySQLimport的语法介绍: mysqlimport位于mysql/bin目录中,是mysql的一个载入(或者说导入)数据的一个非常有效的工具.这 ...

  4. 【java 操作mysql】java连接mysql数据库并查询数据

    做java开发不可避免要处理数据库,所以这里写篇用jdbc来连接mysql的文章,java是一种高性能,通用的语言 .这使得它适合于编写高效的ETL生产代码和计算密集型的机器学习算法. 主要内容包括: ...

  5. Java操作MySQL

    Java操作MySQL PS:在之前的博客中详细的介绍了JAVA怎么用JDBC连接数据库,包括SQL Server和Oracle,用JDBC连接MySQL除了加载驱动和获得连接不同,其他都是一样的操作 ...

  6. java 读取mysql数据库_原生Java操作mysql数据库过程解析

    这篇文章主要介绍了原生Java操作mysql数据库过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.引入数据库驱动的jar包 以通过mav ...

  7. Java 操作MySql Blob 字段

    Java 操作MySql Blob 字段 import java.sql.*; import java.io.*; import javax.swing.*; import java.awt.*; i ...

  8. Java操作Mysql实例

    Java操作Mysql实例 来自:http://junehuang111.blog.163.com/blog/static/627072201191933118658/ 2011-10-19 15:3 ...

  9. java实现excel导入导出,对象图片读取,上传七牛云

    java实现excel导入导出以及解决方案 因为公司业务需求,要完成针对表格的导入导出,excel这里使用MultipartFile类接收 ,下面是部分关键代码,希望有所帮助 //获取excel文件的 ...

最新文章

  1. .NET架构小技巧(4)——反射,架构人员法宝II
  2. Zigbee费尽心思做mesh网究竟在智能家居中有什么用?
  3. LeetCode 555. 分割连接字符串
  4. stl vector 函数_vector :: back()函数以及C ++ STL中的示例
  5. C++设计模式-抽象工厂模式
  6. kafka消息队列的概念理解
  7. 使用php简单网页抓取和内容分析,使用PHP简单网页抓取和内容分析_php
  8. Anonymous推荐软件含有恶意***程序
  9. elasticsearch -- 问题纪录
  10. Autodesk 3DSMax 2016 安装注册说明
  11. u盘安装linux戴尔boot设置,戴尔笔记本电脑怎么设置u盘启动|dell新机型bios设置usb启动步骤...
  12. html动态工艺流程,化工工艺动态流程图制作软件
  13. 5s的app显示无法连接服务器,苹果手机无法连接到app store怎么办
  14. CSS选择器(id选择器,包含选择器,标签名选择器,类选择器,属性选择器,通配符选择器,伪类选择器,相邻选择器,选择器的优先级,子选择器)
  15. PinYin4j使用教程
  16. 智慧指间丨生态环境网格化监管系统——编织生态环保“绿网”
  17. 解析产品开发失败的5个根本原因
  18. cenos 解决Kernel panic – not syncing: Attempted to kill init
  19. /etc下的host配置文件们
  20. 服务器RPM打包详细教程

热门文章

  1. 小米手机qq或者微信分享时提示任何个人应用都无法打开此内容解决
  2. Windows快捷命令-应急响应
  3. 易都市三维城市地图网址
  4. H5页面唤起手机数字键盘
  5. 电脑关机 重启 开机怎么看日志
  6. RF3401M蓝牙对讲无线音频发射接收串口数据透传芯片模块方案--KT3401B芯片
  7. 指令集董事长潘爱民出席2022 ECUG Con,为中国技术力量发声
  8. 龙卷风网络收音机v2.6绿色版
  9. 推荐一款好用的备考全国计算机等级考试二级ACCESS的自主训练系统
  10. 实例分割之SOLO: Segmenting Objects by Locations