最近公司在用DB2数据库,用的DbVisualizer作为数据库管理工具。因为开发库和实际库是分开的,所以经常要从实际库中导出数据到开发库,一般是导出为文件的形式。
在数据量小的时候是每没什么问题的,可是当数据量达到10w以上时,DbVisualizer老内存溢出。一气之下,想到了用JDBC的批处理,来实现数据的导入,说干就干,但是在开发的过程中还是遇到很多问题的,大家都知道,JDBC中的Statement和PreparedStatement都是可是做批处理的,但是在我的这个问题中,只能用Statement,因为是每次从文件中读取要导入的sql语句(都是insert语句),每次读入的时候语句都是变的。所以没法用PreparedStatement(预编译SQL)。
第一次写博,不知道各位大牛们,有没有好的方法?
Connection con = null;
Statement ps = null;
try {
FileReader fr = new FileReader("d:/datas.sql");
BufferedReader bis = new BufferedReader(fr);
String insertSql;
int i = 0;
con = getConnection();
ps = con.createStatement();
long start=System.currentTimeMillis();
while ((insertSql= bis.readLine()) != null&& i<3112) {
ps.addBatch(insertSql);
i++;
if (i % 1000 == 0) {
ps.executeBatch();
ps.clearBatch();
long now=System.currentTimeMillis();
System.out.println("已完成:" + i+",时间:"+(now-start)+"ms");
}
}
//执行剩余的sql
ps.executeBatch();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (ps != null) ps.close();
if (con != null) con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
分享到:
相关推荐
10. **批处理**: 可以通过`Statement`的`addBatch()`和`executeBatch()`方法批量执行多条SQL语句,提高效率。 在压缩包中的"02_传智播客JDBC_编写一个简单的jdbc例子程序"很可能是包含了一个简单的Java源代码文件,...
虽然不直接关联于Oracle JDBC,但可以作为了解其他JDBC驱动使用方式的补充信息。 综上所述,"JDBC 4 ORACLE"这篇博文提供了关于使用JDBC 4.0与Oracle数据库交互的全面教程,涵盖了连接配置、SQL执行、事务管理、...
3. 扩展策略接口:如果需要处理更复杂的映射逻辑,可以考虑在策略接口中添加更多的方法,如处理批处理查询、支持多表联查等。 总结来说,通过将策略模式应用到通用JDBC操作中,我们可以实现返回值映射的灵活配置,...
2. `mssqlserver.jar`:可能是一个特定于Microsoft SQL Server的扩展或补充库,提供了额外的功能或者优化,以增强对SQL Server数据库的支持。 3. `注意事项.txt`:这个文件通常包含关于如何使用这些驱动程序的重要...
- **集群环境中的问题**:如果你的Glassfish是集群部署,直接通过JDBC/_TimerPool连接各个节点上的Derby数据库可能会存在问题,需要特别注意。 总的来说,清理Glassfish上的批处理应用记录涉及到对Derby数据库的...
PreparedStatement用于防止SQL注入,而批处理操作则能提高性能。 除了基础的JDBC,现代Java开发更多地使用ORM(Object-Relational Mapping)框架,如Hibernate和MyBatis,它们将数据库操作与对象模型相结合,简化了...
- **JDBC补充包**(Instant Client Package-JDBC Supplement):提供了针对JDBC环境下X/Open XA规范、国际化支持及RowSet操作的额外支持。 - **SQL*Plus支持包**(Instant Client Package-SQL*Plus):包含了运行...
11. **Spring Boot**:虽然不在3.0.7版本中,但Spring Boot是后来的一个重要补充,它简化了Spring应用程序的初始设置和运行过程。 提供的文件"Spring REST配置指南与问题总结 - 51CTO_COM.mht"可能是关于如何在...
2. 添加补充日志:确保数据库启用了补充日志,以便LogMiner能够解析事务的完整信息。 3. 开启归档:为了分析历史数据,需要开启数据库的归档模式。 4. 安装LogMiner:Oracle数据库自带LogMiner工具,但可能需要...
最后,补充话题可能包括对Hibernate最新特性的探索,如使用注解代替XML配置,以及与Spring等其他框架的集成,这些都是提高开发效率和代码质量的有效途径。 总的来说,学习Hibernate不仅是掌握一个工具,更是理解和...
Apache Flink 是一款流处理框架,同时也支持批处理。 - **Spark**: 框架。Apache Spark 是一款开源的大规模数据处理引擎。 - **HBase**: 框架。HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang ...
- **优化方向**:缓存机制、懒加载、批处理、查询优化等。 #### 五、补充话题与资源 **11. 补充话题** - 包括注解版本的HelloWorld、CLOB/BLOB数据类型处理、自定义数据类型等。 **12. 资源推荐** - 官方网站...
- **JDBC2.0新特性**:列出JDBC 2.0版本引入的新功能,如批处理更新、RowSet等。 - **JDBC对标准的扩展(JNDI)**:介绍如何使用Java命名和目录接口(JNDI)来查找和获取数据库连接。 #### Hibernate 3.0 - **...
通过共享相同的元数据和数据存储层,Impala 和 Hive 可以相互补充,形成一个强大的数据处理平台。 #### 总结 Apache Impala 以其卓越的性能和灵活的集成能力,在大数据分析领域占据了重要地位。通过对上述内容的...
性能优化是Hibernate应用中不可或缺的一部分,涉及到缓存策略、批处理、延迟加载等技术,旨在减少不必要的数据库交互,提高应用响应速度。 #### 九、补充话题与资源 除了上述内容,学习Hibernate还应关注一些补充...
10. **Spring Batch**:Spring Batch是一个用于处理大量数据的批处理框架,它提供了一套完整且可扩展的批处理功能,包括读取、处理和写入数据,以及错误处理和事务管理。 以上是对Spring框架及其相关组件的简要介绍...
面向切面编程则提供了将关注点分离的能力,如日志记录、事务管理等,可以作为核心业务逻辑之外的补充。 Spring框架包含多个模块,例如: 1. **Spring Core**:这是Spring的基础,提供了IoC容器和DI服务,管理对象...
14. JDBC增强:Java 6对JDBC(Java Database Connectivity)进行了增强,如改进的批处理、预编译语句的性能优化以及更好的连接池支持。 15. 轻量级Web开发:Java 6支持Servlet 2.5和JSP 2.1标准,简化了Web应用程序...
这是一个扩展JDBC 2.0规范的库,用于支持某些高级特性,如批处理更新等。虽然大多数现代数据库驱动已经支持这些功能,但对于某些特殊需求,这个库仍然有用。 #### 19. jta.jar JTA (Java Transaction API) 是一个...