`
elvis4139
  • 浏览: 148149 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Java执行Mysql导入

 
阅读更多
最近要实现一个功能,上传SQL文件,后台执行上传SQL文件导入MYSQL数据库。实现方式:

1、读取上传文件,添加到Batch中批量执行。
String sql = "";
BufferedReader br = new BufferedReader(new FileReader(file));
                                       while ((sql = br.readLine()) != null) {//使用readLine方法,一次读一行
                        if (sql.length() > 1) {
                            if (isFirstLine) {
                                sql = sql.substring(1);
                            }
                            stmt.addBatch(sql);
                            executeCount++;
                        }
                        isFirstLine = false;
                    }
                    br.close();


缺点:必须一行是一个可执行SQL语句。


2、将上传SQL文件读取到BufferedReader中,调用mysql执行。
                        Process child = rt.exec("mysql -uroot -proot --default-character-set=utf8  prototype ");
                        OutputStream out = child.getOutputStream();//控制台的输入信息作为输出流
                        String line;
                        StringBuffer sb = new StringBuffer("");
                        String outStr;
                        BufferedReader br = new BufferedReader(new InputStreamReader(
                                new FileInputStream(fPath), "utf8"));
                        while ((line = br.readLine()) != null) {
                            sb.append(line + "\r\n");
                        }
                        outStr = sb.toString();
            
                        OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");
                        writer.write(outStr);
                        // 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
                        writer.flush();
                        // 别忘记关闭输入输出流
                        out.close();
                        br.close();
                        writer.close();


3、通过Runtime.exec方法,直接调用mysql导入功能导入。2部操作
String username = "root";//用户名  
                        String password = "root";//密码  
                        String host = "localhost";//导入的目标数据库所在的主机  
                        String port = "3306";//使用的端口号  
                        String character = "utf8";// 默认字符集
                        String importDatabaseName = "prototype";//导入的目标数据库的名称  
                        String importPath = file.getAbsolutePath();//导入的目标文件所在的位置  
                        //第一步,获取登录命令语句  
                        StringBuilder sb = new StringBuilder();
                        sb.append("mysql -u").append(username);
                        sb.append(" -p").append(password);
                        sb.append(" -h").append(host);
                        sb.append(" -P").append(port);
                        sb.append(" --default-character-set=").append(character);
    
                        String loginCommand = sb.toString();
                        //第二步,获取切换数据库到目标数据库的命令语句  
                        String switchCommand = new StringBuilder("use ").append(importDatabaseName).toString();
                        //第三步,获取导入的命令语句  
                        String importCommand = new StringBuilder("source ").append(importPath).toString();
                        //需要返回的命令语句数组  
                        String[] commands = new String[] { loginCommand, switchCommand, importCommand };
    
                        Runtime runtime = Runtime.getRuntime();
                        Process process = runtime.exec(commands[0]);
                        //执行了第一条命令以后已经登录到mysql了,所以之后就是利用mysql的命令窗口  
                        //进程执行后面的代码  
                        OutputStream os = process.getOutputStream();
                        OutputStreamWriter writer = new OutputStreamWriter(os);
                        //命令1和命令2要放在一起执行  
                        writer.write(commands[1] + "\r\n" + commands[2]);
                        writer.flush();
                        writer.close();
                        os.close();
                        process.destroy();



4、通过Runtime.exec方法,直接调用mysql导入功能导入。1部操作
String cmd = "cmd /c mysql -uroot -proot --default-character-set=utf8  prototype < \""
                                    + file.getAbsolutePath() + "\"";
                    Runtime rt = Runtime.getRuntime();
                    Process p = rt.exec(cmd);

                    p.waitFor();

                    p.destroy();
分享到:
评论

相关推荐

    java调用mysql命令 导入导出数据库

    在给定的标题“java调用mysql命令 导入导出数据库”中,我们可以理解为使用Java来执行MySQL的命令行工具,如`mysqldump`和`mysql`,来实现这些功能。下面将详细讲解如何在Java程序中调用这些命令。 首先,让我们...

    Java实现mysql导入导出Excel

    在Java编程环境中,将MySQL数据库的数据导入到Excel或者将Excel数据导出到MySQL是一项常见的任务。这涉及到对Java处理文件、数据库操作以及处理Excel数据的能力。以下是对这个主题的详细阐述: 1. **Java处理Excel*...

    java编程excel导入MySQL.pdf

    Java 编程Excel 导入 MySQL 知识点 简介 本文档主要讲述了如何使用 Java 编程语言将 Excel 文件导入到 MySQL 数据库中。该过程涉及到 Excel 文件的读取、数据提取、数据库连接和数据INSERT 操作。 Java 读取 Excel...

    利用java 导入Excel表格数据到mysql数据库里,源码,直接导入eclipse就可以运行

    在Java开发中,将Excel表格数据导入MySQL数据库是一项常见的任务,尤其在数据处理、数据分析以及系统集成等场景中。这个项目提供了一套完整的源码,可以直接在Eclipse环境中运行,帮助开发者快速实现这一功能。下面...

    Java连接MySQL的依赖包

    在Java编程中,连接MySQL数据库是一项基础且重要的任务。为了实现这一目标,开发人员需要引入特定的驱动程序,即MySQL的Java连接器(JDBC驱动)。在这个场景中,提到的"mysql-connector-java-5.1.7-bin.jar"正是这样...

    用JAVA导出MYSQL的数据

    本话题主要探讨如何使用Java程序导出MySQL数据库中的数据。以下将详细讲解相关概念和技术。 首先,导出MySQL数据最常用的方式是通过命令行工具`mysqldump`。`mysqldump`是一个实用程序,它能备份MySQL数据库,生成...

    java实现Excel数据导入到mysql数据库.zip

    本项目"java实现Excel数据导入到mysql数据库"旨在利用Java技术将Excel表格中的数据高效地导入到MySQL数据库,并且在数据库中存在相同数据时进行更新,同时也支持将数据库中的数据导出到Excel表中。这个过程涉及到多...

    java 连接mysql demo和所有jar

    总之,这个压缩包为初学者提供了一个基础的Java连接MySQL的实例,同时也包含了运行这些示例所需的所有库文件。通过学习和理解这些代码,你可以掌握Java如何与MySQL数据库进行交互,并在此基础上构建更复杂的数据库...

    java实现excel到mysql数据的导入实例

    在Java编程环境中,将Excel数据导入到MySQL数据库是一项常见的任务,尤其在数据处理、数据分析或者系统集成时。本文将详细讲解如何使用Java实现这一过程,包括读取Excel文件、建立对应的MySQL表结构以及数据的迁移。...

    Java 实现从Excel批量导入数据到MySQL

    本文将详细介绍如何利用Java实现从Excel批量导入数据到MySQL数据库。 首先,我们需要了解两个关键的库:Apache POI 和 JDBC。Apache POI 是一个开源的Java库,用于读写Microsoft Office格式的文件,包括Excel。JDBC...

    导入导出mysql数据

    知识点:MySQL 数据库的导入与导出操作及 Java 实现 在 IT 行业中,数据库的管理和维护是一项至关重要的工作。特别是在 MySQL 这样的流行关系型数据库管理系统中,数据的备份与恢复变得尤为重要。本篇文章将深入...

    java连接mysql数据库用到的jar包

    MySQL Connector/J是MySQL官方提供的Java数据库连接器,它实现了Java Database Connectivity (JDBC) API,使得Java开发者能够通过编写Java代码来执行SQL语句,处理数据库中的数据。JDBC是Java平台上的一个标准接口,...

    mysql java JDBC 导入资源包mysql-connector-java-5.1.48

    总的来说,"mysql-connector-java-5.1.48"是Java与MySQL数据库间通信的关键桥梁,它提供了在Java应用中执行SQL查询、管理数据、处理事务等功能。在开发过程中,正确配置和使用这个驱动包,能够帮助开发者高效地与...

    java实现mysql数据库的表导出到excel文件

    在Java项目中,我们需要添加MySQL的JDBC驱动(如mysql-connector-java.jar)作为依赖,以便能够执行SQL语句并获取数据。 接下来,我们需要处理Excel文件。Java中常用的处理Excel文件的库有Apache POI。Apache POI是...

    logstash数据从mysql导入es所需mysql的jar包

    首先,`logstash数据从mysql导入es所需mysql的jar包`指的是Logstash需要连接到MySQL数据库,这就需要用到Java Database Connectivity (JDBC) 驱动。MySQL的JDBC驱动是一个Java类库,允许Java应用程序与MySQL数据库...

    java连接mysql代码范例.rar

    总结来说,这个"java连接mysql代码范例.rar"提供了基础的Java与MySQL交互的步骤,包括连接数据库、执行SQL和处理结果。对新手来说,这是一个很好的起点,有助于理解数据库操作的基本概念。对于有经验的开发者,这些...

    Java读取Excel内容并导入MySQL

    这个场景描述的是一个典型的Java程序从Excel文件中读取数据,然后将这些数据导入到MySQL数据库的过程。下面我们将深入探讨这个过程涉及的技术点和实现步骤。 首先,Java用于读取Excel内容时,通常会用到Apache POI...

    java + mysql在线商城,比较简单

    你可以导入这个脚本到MySQL数据库中,以便于在本地环境中运行和调试这个在线商城项目。 总的来说,这个项目为你提供了一个实践Java Web开发的平台,涵盖了从数据库设计、后端开发到前端展示的全链条知识。通过深入...

Global site tag (gtag.js) - Google Analytics