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

JDBC中的SQL批处理

    博客分类:
  • JDBC
阅读更多
1899942 ,新疆-乌鲁木齐
1899944 ,新疆-哈密
1899946 ,新疆-吐鲁番
1899948 ,新疆-塔城
1899950 ,新疆-克拉玛依
1899952 ,新疆-克拉玛依
1899954 ,新疆-昌吉
1899956 ,新疆-昌吉
1899958 ,新疆-伊犁
1899960 ,新疆-库尔勒
1899962 ,新疆-库尔勒
1899964 ,新疆-喀什
1899966 ,新疆-阿克苏
1899968 ,新疆-哈密
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
有几万条这样的数据需要插入数据库

  public class Test2 {
	public static void main(String[] args) {
		long start = System.currentTimeMillis();
		String sql = "insert into mobile_place(number,place) values(?,?)";
		int count=0;
		PreparedStatement pstmt = null;
		Connection conn = JDBCUtil.getConnection();
		try {
			pstmt = conn.prepareStatement(sql);
			
			InputStreamReader is = new InputStreamReader(new FileInputStream(new File("D:/CC.txt")),"utf-8");
			BufferedReader br = new BufferedReader(is);
			//设置数据手动提交,自己管理事务
			conn.setAutoCommit(false);
			
			String s1 = null;
			String s2 = null;
			while(br.readLine() != null){
				count++;//每读取一行数据,计数器+1
				String str = br.readLine().toString().trim();//读取一行数据
				s1 = str.substring(0, str.indexOf(","));//取逗号以前的一段
				s2 = str.substring(str.indexOf(",")+1,str.length());//取逗号之后的一段
				
				pstmt.setString(1, s1);
				pstmt.setString(2, s2);
				pstmt.addBatch();//用PreparedStatement的批量处理
				
				if(count%1000==0){//当增加了1000个批处理的时候再提交
					pstmt.executeBatch();//执行批处理
					conn.commit();//提交
					conn.close();//关闭数据库
					conn = JDBCUtil.getConnection();//重新获取一次连接
					conn.setAutoCommit(false);
					pstmt = conn.prepareStatement(sql);
				}
				System.out.println("已插入"+count+"条数据");
			}
			if(count%1000!=0){//while循环外的判断,为了防止上面判断后剩下最后少于500条的数据没有被插入到数据库
				pstmt.executeBatch();
				conn.commit();
			}
			long end = System.currentTimeMillis();
			
			System.out.println("共花费时间:"+(end-start));
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				pstmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
	}
}


//getConnection()为获取数据库连接 
public static Connection getConnection(){ 
try { 
Class.forName("com.mysql.jdbc.Driver"); 
} catch (ClassNotFoundException e) { 
e.printStackTrace(); 
} 
try { 
conn = DriverManager.getConnection(url, userName, password); 
} catch (SQLException e) { 
e.printStackTrace(); 
} 
return conn; 
}
分享到:
评论
1 楼 China2010pan 2014-10-28  
很实用的批处理,赞一个

相关推荐

    【动力节点】Java经典教程_JDBC视频教程

    Java教程中阐述了接口在开发中的真正作用,JDBC规范制定的背景,JDBC编程六部曲,JDBC事务,JDBC批处理,SQL注入,行级锁等,是学习JDBC最好的Java教程。JDBC 资源太大,传百度网盘了,链接在附件中,有需要的同学...

    JDBC(powernode CD2206)详尽版 (教学视频、源代码、SQL文件)

    JDBC(powernode CD2206)详尽版 (教学视频、源代码、SQL文件) 包含:教学视频、源代码(与博客同步)、SQL文件 一、介绍 二、JDBC常用的接口和类 2.1 Driver接口 2.2 DriverManager类 2.3 Connection接口 2.4 ...

    JDBC笔记 JDBC笔记

    1.在JDBC中包括了两个包:java.sql和javax.sql。 ① java.sql 基本功能。这个包中的类和接口主要针对基本的数据库编程服务,如生成连接、执行语句以及准备语句和运行批处理查询等。同时也有一些高级的处理,比如...

    jdbc连接数据库的方式2

     调用setExecuteBatch()时指定的值是一个上限,当达到该值时,就会自动地引发SQL命令执行,标准的executeUpdate()方法就会被作为批处理送到数据库中。我们可以通过调用PreparedStatement类的sendBatch()方法随时...

    自己封装的JDBC工具类

    自己封装的JDBC工具类,能够实现对数据库的增删改查以及批处理,事物处理等操作

    JDBC入门到精通视频教程课堂笔记

    本套视频教程中讲解了Java语言如何连接数据库,对数据库中的数据进行增删改查操作,适合...Java教程中阐述了接口在开发中的真正作用,JDBC规范制定的背景,JDBC编程六部曲,JDBC事务,JDBC批处理,SQL注入,行级锁等。

    jdbc连接程序实现不同数据库数据的迁移

    采用jdbc连接数据库,将两种不同类型的数据(SqlServer、Oracle)进行转换,来完成数据库数据的迁移。 实现方式,查询SqlServer数据,批处理插入到Oracle中。

    自己封装的JDBC工具类源码

    最近刚学习了JDBC,最后封装了一段简单的工具类,主要功能有: 1、执行sql语句返回单条查询结果; 2、执行查询语句sql返回结果集; 3、执行数据的插入,修改,删除; 4、执行批处理; 5、调用存储过程; 6、...

    JDBC核心技术精讲

    9、mysql的预处理功能开启 10、JDBC中日期时间类型讨论11、通过JDBC存储和取出音频和视频数据 12、批处理概述 13、事务概述及事务的四大特性 14、mysql中使用事务 15、jdbc中使用事务 16、数据库连接池的介绍和...

    MySQL_4_JDBC高级操作和事务1

    第十二章 JDBC批处理操作批量处理允许您将相关的SQL语句分组到批处理中,并通过对数据库的一次调用提交它们。当您一次向数据库发送多个SQL语句时,可以减少连接

    jdbc基础和参考

    JDBC批处理: addBatch executeBatch Statement PreparedStatement Statement{ 1.获取连接 getConnection(); 2.创建Statement conn.createStatement(); 3.执行sql语句 String sql .... insert delete update ...

    jdbc+mysql工具类

    这是jdbc 批处理输入大量数据到mysql的代码,应该会比较有用

    基于SpringJdbc和Freemarker的JAVA轻量级持久层框架设计源码

    文件类型包括72个Java源代码文件、64个Freemarker模板文件、5个XML配置文件、5个SQL文件、4个Properties配置文件、2个BAT批处理文件、1个GIT属性文件、1个GIT忽略文件和1个LICENSE文件。该框架具备Mybatis一样的SQL...

    轻量级Java持久层框架MiniDAO:基于SpringJDBC与FreeMarker的源码实现

    项目名称:轻量级Java持久层框架MiniDAO...MiniDAO致力于简化数据访问层代码,通过FreeMarker模板提供灵活的SQL管理方式,同时继承了Spring JDBC的易用性和高效性,为Java开发者提供了一个简洁、高效的持久层解决方案。

    jOOQ-manual-3.10.pdf

    批处理执行:当执行大量SQL语句时,批处理执行很重要。与JDBC相比,jOOQ简化了这些操作 导出和导入:jOOQ附带了一个API,可以轻松导出/导入各种格式的数据 如果您是喜爱的,功能丰富的数据库的高级用户,jOOQ将帮助...

    hbase phoenix sql

    Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的JDBC结果集。直接使用HBase API、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能...

    fluent-jdbc:Java库,用于高效的本机SQL查询(通过JDBC)

    是用于方便的本机SQL查询的Java库。 与Java 8 /功能代码很好地融合在一起,支持许多jdbc包装程序阻止/抽象的功能,并且重量轻(〜80K,无依赖项)。 FluentJdbc的主要功能: 功能性,流利的API 以单行的形式执行...

    Oracle SQL Hand-Oracle工具 v5.1.zip

    (14) 监控批量SQL语句的运行,在运行中可暂停、更正等; (15) 连接配置简单,自动重新连接; (16) 占用系统资源极少,启动快,连接快,运行快; (17) 高效的语句块操作,高亮显示配对括号; (18) 功能实用,操作...

    JDBC 简介

    附:JDBC 应用案例、异常处理、批处理 JDBC 附 JDBC 应用案例 // 应用 import java.sql.*; public class JdbcTest { // JDBC 驱动器名称 和数据库地址 static final String JDBC_DRIVER = ...

Global site tag (gtag.js) - Google Analytics