`
greemranqq
  • 浏览: 971929 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

mysql 批量操作

阅读更多

批量操作一般都会有,这里也分享一下我的经验:

用的早期的:mysql-connector-java-5.0.7-bin.jar

关于连接代码看:http://greemranqq.iteye.com/admin/blogs/1830200

 

这里我发现的问题是:

1.将自动提交设置成false, 不然批量操作会失去效果

2.网上说:jdbc.url = jdbc:mysql://localhost:3306/test?rewriteBatchedStatements=true

   这只成true,才有批量效果。我设置成false 和true 都没什么影响

   求同志们多指导,详细原因不了解

 

数据库层的操作:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DaoUtil {
	private static Connection conn;
	// 批量插入语句
	static String batchSql = "insert into newtable values(?,?)";

	// 普通插入大量数据
	public static void insertBatch1(String batchSql) {
		conn = ConnectionUtil.getConnection();
		try {
			PreparedStatement ps = conn.prepareStatement(batchSql);
			for (int i = 0; i < 10000; i++) {
				ps.setInt(1, i);
				ps.setString(2, "name");
				ps.addBatch();
			}
			ps.executeBatch();
		} catch (SQLException e) {
			ConnectionUtil.rollback(conn);
			e.printStackTrace();
		}finally{
			ConnectionUtil.colse(conn);
		}
	}

	// 批量插入
	public static void insertBatch2(String batchSql) {
		conn = ConnectionUtil.getConnection();
		try {
			// 自动提交默认是true,就会按条执行,执行效率没有优化
			conn.setAutoCommit(false);
			PreparedStatement ps = conn.prepareStatement(batchSql);
			for (int i = 0; i < 10000; i++) {
				ps.setInt(1, i);
				ps.setString(2, "name");
				ps.addBatch();
			}
			ps.executeBatch();
			conn.commit();
		} catch (SQLException e) {
			ConnectionUtil.rollback(conn);
			e.printStackTrace();
		}finally{
			ConnectionUtil.colse(conn);
		}
	}
	
	public static void main(String[] args) {
//		long begin1 = System.currentTimeMillis();
//		insertBatch1(batchSql);
//		long end1 = System.currentTimeMillis();
//		System.out.println("普通插入10000条数据时间:"+(end1-begin1));
		
		long begin2 = System.currentTimeMillis();
		insertBatch2(batchSql);
		long end2 = System.currentTimeMillis();
		System.out.println("批量插入10000条数据时间:"+(end2-begin2));
	}
}

 

这里 的简单记录,大概效率是10倍左右。有些细节我也没注意了。

0
1
分享到:
评论

相关推荐

    Mysql批量操作1

    MySQL 批量操作详解 在 MySQL 中,批量操作是指在单个数据库语句中执行多条操作的过程。这种操作可以大大提高数据库的性能和效率。本文将对 MySQL 批量操作进行详细的介绍,包括批量插入、批量修改和批量删除操作。...

    使用批处理对MySQL进行数据批量操作

    批处理是一种非交互式运行MySQL程序的方法,如同您在MySQL中使用的命令一样,你仍然将使用这些命令。本文介绍了使用批处理对MySQL进行数据批量操作的方法。

    mysql 批量更新及效率对比

    MySQL 批量更新是指在 MySQL 数据库中批量更新多条记录的操作。这种操作在实际应用中非常常见,例如批量更新用户信息、订单状态等。然而,批量更新的效率问题一直是一个棘手的问题。近期,我们有了大量的 MySQL 批量...

    Java实现批量向mysql写入数据的方法

    本文中提供了一个完整的示例代码,演示了Java实现批量向mysql写入数据的方法,包括JDBC连接mysql数据库、批量向mysql写入数据和基本的异常处理等操作。该示例代码可以作为Java程序设计的参考,帮助读者更好地理解...

    mysql批量修改表前缀

    下面将详细介绍如何在MySQL中进行批量修改表前缀的操作。 首先,我们需要一个能够执行SQL脚本的工具,比如PHPMyAdmin、MySQL命令行客户端或者通过PHP编写一个脚本来实现。在这个案例中,提供了一个名为"sql批量修改...

    MySQL批量更新实战:6种方式效率PK.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    从效率角度看6种MySQL批量更新方式的优劣.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    根据excel数据批量新增或更新mysql的表

    对于批量操作,可以使用`executemany()`方法提高效率。 6. **提交事务**:确保所有更改都已保存,通过调用连接对象的`commit()`方法提交事务。 7. **关闭连接**:最后,记得关闭数据库连接,以释放资源。 在实际...

    向MySQL批量导入文本文件

    本篇文章将详细讲解如何向MySQL批量导入文本文件,以便于快速有效地处理大量数据。 首先,理解文本文件导入的基本原理。在MySQL中,最常用的文本格式是CSV(Comma Separated Values,逗号分隔值)或TSV(Tab ...

    批量删除MySQL数据库相同前缀的数据表.rar

    本话题聚焦于批量删除具有相同前缀的数据表,这通常在进行数据清理、测试环境重置或者应用升级时需要进行的操作。这里提供的"批量删除MySQL数据库相同前缀的数据表.rar"是一个工具,它能够帮助用户高效地完成这一...

    springboot mysql 批量更新 springboot batch批量更新.zip

    通过实际测试对比了Spring Boot中6种MySQL批量更新方式的效率,并详细记录了每种方法在处理500,1000,5000,10000,50000,100000条数据的平均时间、最小时间和最大时间。包括MyBatis-Plus提供的批量更新,JdbcTemplate...

    Shell脚本批量添加CSV数据到MySQL

    本篇将详细介绍如何使用Shell脚本结合CSV文件批量将数据导入MySQL数据库,以提高工作效率。 首先,`prov.csv` 是一个包含CSV(逗号分隔值)格式的数据文件,这种文件类型常用于存储表格数据,易于读写和处理。在本...

    mysql快速批量生成执行脚本

    在MySQL数据库管理过程中,经常需要对多个表进行批量操作,例如批量修改字段类型、在所有表中添加新字段等。这些任务如果手动一个一个地去完成,将会非常耗时且容易出错。为了提高效率并减少错误,我们可以利用SQL...

    kettle批量导出mysql建表语句

    总结来说,"kettle批量导出mysql建表语句"涉及到的关键技术点包括Kettle的使用、MySQL数据库的连接与交互、元数据的获取、文件的读写操作以及文本处理和自动化流程的设计。通过掌握这些技能,IT专业人员可以更高效地...

    python工具-excel批量导入mysql (几千万数据半小时可搞定)

    本篇文章将详细讲解如何利用Python工具实现Excel数据的批量导入到MySQL数据库,以及如何优化这一过程,使得几千万的数据能够在半小时内完成导入。 首先,我们需要了解Python中用于操作Excel的主要库——pandas。...

    Python-Python3操作mysql数据库实现增批量增删改查

    PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

    MySQL BLOB类型中二进制字段和批量操作输入.docx

    MySQL中的BLOB类型是用于存储...总结来说,MySQL的BLOB类型是为了解决大数据存储问题,而PreparedStatement是Java中用来安全高效地操作BLOB字段的工具。正确理解和使用这些技术,对于处理大量的二进制数据至关重要。

    从mysql数据库中批量下载Blob图片到本地

    总结起来,批量下载MySQL数据库中Blob类型的图片至本地,需要理解Blob数据类型,熟悉Java的JDBC操作,以及掌握文件I/O操作。通过以上步骤,你可以有效地完成这一任务,确保图片数据的完整性和可访问性。在实际项目中...

    Flink实时读取Kafka数据批量聚合(定时按数量)写入Mysql.rar

    标题中的"Flink实时读取Kafka数据批量聚合(定时/按数量)写入Mysql"是一个典型的实时数据处理场景,涉及到大数据技术栈中的三个关键组件:Apache Flink、Apache Kafka和MySQL。以下是对这些技术及其在该场景下应用...

    批量替换msyql字段内容

    在MySQL中,这种操作可以通过SQL语句配合正则表达式来实现,这正是"批量替换mysql字段内容"这一主题的核心。批量替换对于优化数据、修复错误或者统一格式等场景非常有用。 首先,我们需要了解MySQL中的`REPLACE()`...

Global site tag (gtag.js) - Google Analytics