`
a283037321
  • 浏览: 17316 次
  • 性别: 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  
很实用的批处理,赞一个

相关推荐

    使用JDBC的批处理功能

    1. 适当设置批处理大小:根据数据库和应用需求调整批处理中SQL语句的数量,过大可能导致内存问题,过小则无法充分利用批处理的优势。 2. 错误处理:如果批处理中某个语句失败,可以捕获BatchUpdateException来获取...

    JDBC高级批处理

    Java Database Connectivity (JDBC) 是Java平台中用于与数据库交互的一组接口和类,它是Java标准API的一部分,允许Java开发者执行SQL语句并处理结果。在处理大量数据时,JDBC提供了批处理功能,以提高性能和效率。...

    sqlserver2000-jdbc2.0驱动

    在SQL Server 2000的情况下,Microsoft提供了JDBC驱动,使得Java开发者能够轻松地在Java应用中集成SQL Server。`sqljdbc.jar`是微软早期发布的JDBC驱动程序,适用于Java 2 Platform, Standard Edition (J2SE) 5.0及...

    JDBC for sql 2012

    在本文中,我们将深入探讨JDBC与SQL Server 2012结合使用的相关知识点。 1. **JDBC驱动类型** JDBC提供四种类型的驱动,分别为类型1、2、3和4。对于SQL Server 2012,我们通常使用类型4的Java Native Access(JNA...

    JDBCDriver3.0.rar_jdbc driver 3.0_sql jdbc 3.0_sql server jdbc_s

    本文将深入解析JDBC Driver 3.0以及其在SQL Server环境中的应用。 JDBC Driver 3.0是Java SE 6引入的一个重要更新,它带来了许多增强功能和性能改进,旨在提升开发者的体验和应用程序的效率。此版本的驱动程序支持...

    JDBC连接SQL Server 2008 R2的驱动

    标题中的“JDBC连接SQL Server 2008 R2的驱动”指的是使用Java数据库连接(JDBC)技术与Microsoft SQL Server 2008 R2数据库进行交互所需的驱动程序。JDBC是Java平台的标准接口,它允许Java应用程序与各种类型的...

    sqljdbc和sqljdbc4

    **性能优化**:SQLJDBC4还提供了性能优化选项,例如批处理操作,允许一次提交多个SQL语句,减少网络往返次数。还可以调整连接池大小、超时设置等以适应不同的负载需求。 总之,SQLJDBC和SQLJDBC4为Java开发者提供了...

    jdbc 增删改查事物处理, 批处理,以及预编译示例代码

    在Java数据库连接(JDBC)中,增删改查(CRUD)操作是与数据库交互的基础,事务处理、批处理和预编译SQL语句则是提高效率和保证数据一致性的关键技术。以下是对这些概念的详细说明: 1. **JDBC增删改查(CRUD)**:...

    sqljdbc和sqljdbc4jar包.rar

    1. **添加依赖**: 将`sqljdbc.jar`或`sqljdbc4.jar`添加到项目的类路径中。如果你使用的是现代构建工具如Maven或Gradle,可以在pom.xml或build.gradle文件中添加相应的依赖项。 2. **注册驱动**: 在Java代码中,...

    sqljdbc.sqljdbc4.rar

    下面将详细阐述SQL Server JDBC驱动及其在SQL Server 2008中的应用。 SQL Server JDBC驱动是由微软官方开发的,它遵循Java Database Connectivity (JDBC) API标准,允许Java开发者通过编写Java代码与SQL Server...

    Java程序通过JDBC连接SQLServer2000数据库全解.doc

    安装方法同样是双击`C:\SQL2KSP4`文件夹中的`setup.bat`批处理文件。值得注意的是,如果不安装SP4补丁,则Java程序将无法成功连接SQL Server 2000数据库。 3. **配置Java驱动**: 在安装好SQL Server 2000及SP4补丁...

    JDBC数据库操作值MySQL批处理操作

    MySQL批处理是JDBC提供的一种优化数据库操作的方法,它允许开发者一次提交多个SQL语句,从而提高数据处理效率。本文将深入探讨JDBC在MySQL数据库中的应用,以及如何实现批处理操作。 首先,理解JDBC的基础知识至关...

    批处理导入SQL文件

    批处理导入SQL文件是数据库管理中的一个重要操作,它主要用于高效地执行大量SQL语句,比如在数据迁移、数据库初始化或更新时。批处理通过合并多个SQL命令为一个单一的处理单元,可以显著提高数据处理速度,减少网络...

    MS SQL Server JDBC驱动2.0版,sqljdbc_2.0

    SQL Server JDBC驱动2.0提供了多种特性,如支持批处理、事务管理、预编译语句(PreparedStatement)、结果集(ResultSet)、游标(Cursor)、元数据查询以及SQL Server特有的功能,如XML列类型和存储过程。...

    jdbc for sqlserver

    1. **JDBC驱动配置**:SQLServer JDBC驱动需要在项目中添加依赖,如上述文件。在Maven项目中,可以在pom.xml中声明对应的依赖。 2. **事务管理**:SQLServer支持ACID事务,JDBC提供了`Connection.setAutoCommit()`...

    Java程序通过JDBC连接Sqlserver2000所用到的Jar包

    在Java编程中,连接到SQL Server 2000数据库通常需要使用Java Database Connectivity (JDBC) API。JDBC提供了一种标准的方式来访问各种类型的数据库,包括SQL Server 2000。以下是一些关于如何使用Java通过JDBC连接...

    oracle 中使用批处理文件,同时执行,多个.sql文件。

    另外,如果你需要在Java或其他编程语言环境中实现批处理,可以通过JDBC连接Oracle数据库,调用Statement对象的`executeBatch()`方法来执行预编译的SQL语句集合。这通常涉及以下步骤: 1. 创建数据库连接。 2. 预编译...

    sqljdbc4 (SQL连接驱动包)

    这个驱动包是专门为那些使用Java平台标准版(Java SE)7或更高版本的开发者设计的,因为它的名字`sqljdbc4`中的数字4暗示了它支持Java SE 7的 JDBC 4.0 规范。下面将详细解释`sqljdbc4`驱动包的相关知识点。 1. **...

    sqlserver在JDK1.6用的JDBC

    7. **批处理**:JDBC提供批处理功能,可以一次性发送多条SQL语句,提高效率。 8. **结果集处理**:通过ResultSet对象获取查询结果,可以迭代遍历记录,也可以通过`next()`方法逐行读取。 9. **异常处理**:使用`...

    sqljdbc_3.0,4.0 连接sqlserver数据库使用的jar包

    2. 引入JDBC API:在Java代码中,导入所需的JDBC类,例如`java.sql.Connection`, `java.sql.DriverManager`, `java.sql.Statement`, 和 `java.sql.ResultSet`。 3. 注册驱动:使用`Class.forName()`方法注册SQL ...

Global site tag (gtag.js) - Google Analytics