package com.web.test; import java.io.BufferedWriter; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileWriter; import java.io.InputStream; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import com.mysql.jdbc.Connection; public class TestMysql { public static int COMMIT_SIZE = 25000; // 插入数量 public static void main(String args[]) { // writeTestTxt(COMMIT_SIZE); //battchInsertByFile();//加载文件后插入 battchInsertByStream();//数据生成后插入 } public static void battchInsertByFile() { try { System.out.println("开始写入数据"); Connection conn = getConnection();// 取得数据库的连接 conn.setAutoCommit(false); long starTime = System.currentTimeMillis(); //String sql = "load data infile 'c:/t0.txt' into table t0 fields terminated by ',' enclosed by '\\'' lines terminated by '\\r\\n'"; String sql = "load data infile 'c:/t0.txt' replace into table t0 character set GBK fields terminated by ',' enclosed by '\\'' lines terminated by '\\r\\n' (`name`,`age`,`description`)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.execute(); conn.commit(); long endTime = System.currentTimeMillis(); System.out.println("program runs " + (endTime - starTime) + "ms"); // 关闭声明和连接 pstmt.close(); conn.close(); } catch (SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); // 显示数据库连接错误或者查询错误 } } public static void battchInsertByStream() { // 一共多少个 int COUNT = 100000; long a = System.currentTimeMillis(); Connection conn = null; try { conn = getConnection(); long starTime = System.currentTimeMillis(); conn.setAutoCommit(false); PreparedStatement pstmt = conn.prepareStatement("load data local infile '' " + "into table t0 fields terminated by ',' (`name`,`age`,`description`)"); StringBuilder sb = new StringBuilder(); for (int i = 1; i <= COUNT; i++) { //sb.append(i + "," + i + "abc" + "\n"); sb.append("name_a"+i+",age_a,english_a\n"); if (i % COMMIT_SIZE == 0) { InputStream is = new ByteArrayInputStream(sb.toString().getBytes()); ((com.mysql.jdbc.Statement) pstmt).setLocalInfileInputStream(is); pstmt.execute(); conn.commit(); sb.setLength(0); } } InputStream is = new ByteArrayInputStream(sb.toString().getBytes()); ((com.mysql.jdbc.Statement) pstmt).setLocalInfileInputStream(is); pstmt.execute(); conn.commit(); long endTime = System.currentTimeMillis(); System.out.println("program runs " + (endTime - starTime) + "ms"); } catch (SQLException e) { e.printStackTrace(); } finally { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } // 在最好的一行加上: System.out.println("\r插入数据条数:" + COUNT + ",提交的阀值:" + COMMIT_SIZE + ",执行耗时 : " + (System.currentTimeMillis() - a) / 1000f + " 秒 "); } public static Connection getConnection() { Connection con = null; // 取得连接的url String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true"; // 加载MySQL的jdbc驱动 try { Class.forName("com.mysql.jdbc.Driver"); // 使用能访问MySQL数据库的用户名root String userName = "root";// 使用口令 String password = "root";// 打开数据库连接 con = (Connection) DriverManager.getConnection(url, userName, password); return con; } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return con; } public static void writeTestTxt(int count){ try{ BufferedWriter writer = new BufferedWriter(new FileWriter(new File("c:\\t0.txt"))); for(int i=0 ;i<count;i++){ writer.write("name2"+i+",age2,english2\r\n"); //writer.write("\"101\",\"英语\",\"english\",\"100001\"\r\n"); } writer.close(); }catch(Exception e){ } } }
CREATE TABLE `t0` ( `id` bigint(20) NOT NULL auto_increment, `name` varchar(20) NOT NULL, `age` varchar(50) NOT NULL, `description` text NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_name` (`name`) ) ENGINE=MyISAM AUTO_INCREMENT=100001 DEFAULT CHARSET=utf8;
相关推荐
本文将深入探讨如何使用JDBC进行批量插入数据,这在处理大量数据时能显著提高性能。 批量插入数据是数据库操作中常见的一种优化策略,特别是在数据分析、数据迁移或大数据处理等场景。传统的单条插入方式可能会导致...
本篇文章将详细介绍如何使用Java实现JDBC批量插入数据,并比较三种常见的JDBC批量插入编程方法。 **方法一:使用PreparedStatement加批量的方法** PreparedStatement是Statement的子接口,允许预编译SQL语句,这...
#### 一、JDBC批量插入 JDBC(Java Database Connectivity)是Java平台中用来标准地连接数据库的技术。通过JDBC,Java应用程序可以与多种类型的数据库进行交互,实现数据的读取、写入等功能。批量操作是指在一次...
在数据库操作中,批量插入(Batch Insert)是一种提高性能的有效方式,尤其是在处理大量数据时。本文将探讨Mybatis和JDBC在批量插入MySQL数据库时的性能差异,并提供相关的测试资源。 首先,JDBC(Java Database ...
因此,"jdbc批量插入大字段"这个话题旨在探讨如何高效地通过Java JDBC来实现Blob字段的批量插入,以提高性能。 首先,我们需要了解JDBC(Java Database Connectivity),它是Java编程语言与各种数据库之间通信的...
"JDBC连接MySQL数据库批量插入数据过程详解" 本文主要介绍了使用JDBC连接MySQL数据库批量插入数据的过程详解,通过示例代码详细介绍了批量插入数据的步骤,对大家的学习或者工作具有一定的参考学习价值。 一、JDBC...
总结来说,选择JDBC批量插入方法应基于数据插入的特性和需求。PreparedStatement适合动态参数,Statement适用于静态SQL,CallableStatement用于存储过程。理解它们的优缺点以及正确使用方式,能有效提升数据库操作的...
通过上述分析可知,JDBC批量插入相比于逐条插入具有显著的性能优势。特别是在处理大量数据时,批量插入能够显著提升数据处理的效率。同时,合理的批量大小设置对于充分发挥批量插入的优势至关重要。在实际项目开发中...
本篇文章将详细介绍如何利用Java和MyBatis实现批量插入数据到Oracle数据库中。 首先,我们需要理解Oracle数据库的一些基本概念。Oracle是世界上最流行的商业关系型数据库管理系统之一,以其强大的功能和高可靠性而...
本文将深入探讨如何利用`JdbcDaoSupport`进行批量插入数据的操作,以及其背后的原理和源码分析。 首先,`JdbcDaoSupport`是`AbstractJdbcDaoSupport`的子类,它提供了对JDBC访问的便捷封装,允许开发者无需直接管理...
在实际操作中,你可能需要结合具体的技术栈,例如Python的pandas库配合SQLAlchemy,Java的JDBC,或者是Node.js的Sequelize等,使用它们提供的批量插入接口。同时,要关注数据库类型,如MySQL、PostgreSQL、Oracle或...
在创建表的同时,也可以通过查询的方式直接向表中插入数据。这种方式通常用于初始数据的填充。 **示例**: ```sql CREATE TABLE new_table AS SELECT * FROM existing_table WHERE condition; ``` 这种方式结合了...
本主题将详细讲解如何使用Spring JDBC Template访问MySQL数据库并进行批量插入数据的操作。 首先,我们需要在项目中引入Spring框架的相关依赖,通常包括`spring-context`和`spring-jdbc`。这些可以在Maven或Gradle...
5. **批量插入数据到数据库** 在数据处理过程中,往往还需要将数据批量插入到数据库。EasyExcel提供了一个`executeBatchInsert`方法,可以配合JDBC或其他ORM框架如MyBatis,将数据批量插入到数据库。首先,我们需要...
### JDBC批量操作详解:效率与性能的提升策略 在数据库操作中,批量处理是一种常见的优化技术,用于提高数据处理的效率和性能。JDBC(Java Database Connectivity)作为Java应用程序与数据库交互的标准API,提供了...
在SQL Server中,批量插入数据是一项重要的性能优化技术,尤其当需要处理大量数据时。本文将探讨如何在MSSQL中高效地批量插入数据,并针对给出的代码示例进行分析和优化。 首先,我们来看一个常见的批量插入方法,...
在IT领域,尤其是在数据库操作与框架应用中,批量插入数据是一项常见且重要的需求。相比于单条插入,批量插入能够显著提升数据处理效率,减少数据库I/O操作,从而提高整体性能。本文将深入探讨如何利用MyBatis框架...
在Java开发中,Spring JDBC是Spring...总的来说,Spring JDBC提供了强大的批量处理能力,通过`NamedParameterJdbcTemplate`的`batchUpdate`方法,我们可以轻松地实现数据的批量插入和更新,有效提升数据库操作的效率。
在Oracle数据库中,批量插入数据是一项关键技能,尤其在处理大量数据时,它能显著提高数据操作效率。本文将深入探讨Oracle数据库中的批量插入技术,包括其原理、实现方法以及一个具体的C#代码示例。 ### Oracle批量...
总结,本教程介绍了如何使用Apache POI读取Excel数据并借助JDBC批量插入到MySQL数据库的方法。这种方法适用于需要从Excel数据源导入大量数据到关系型数据库的场景,能够有效地提高数据处理的效率。在实际应用中,...