0 0

JDBC插入大量数据问题5

我用的mysql

public class Main {
public static void main(String[] args) {
int count = 0;
PreparedStatement pstmt =null;
Connection conn = JDBCUtil.getConnection();
String sql = "insert into mobile_place(number,place) values(?,?)";
try {
InputStreamReader is = new InputStreamReader(new FileInputStream(new File("D:/CC.txt")),"utf-8");
BufferedReader br = new BufferedReader(is);
while(br.readLine() != null){
conn.setAutoCommit(false);
count++;
String str = br.readLine().toString().trim();
String s1 = str.substring(0, str.indexOf(","));
String s2 = str.substring(str.indexOf(",")+1,str.length());
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, s1);
pstmt.setString(2, s2);
pstmt.addBatch();
if(count%500 == 0){
pstmt.executeBatch();
conn.commit();
}
System.out.println("已插入"+count+"条数据");
}
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

1899952 ,新疆-克拉玛依
1899954 ,新疆-昌吉
1899956 ,新疆-昌吉
1899958 ,新疆-伊犁
1899960 ,新疆-库尔勒
1899962 ,新疆-库尔勒
1899964 ,新疆-喀什
1899966 ,新疆-阿克苏
1899968 ,新疆-哈密
1899970 ,新疆-奎屯
1899972 ,新疆-奎屯
1899974 ,新疆-塔城
1899976 ,新疆-博乐
。。。。。。。。。。。。。。。。。。。。。。。。。。。。
有很多这样格式的数据,读取出来存入数据库,但是数据库中根本就没有插入这么多数据,只有很少的一部分插进去了,这是为什么?
2012年9月20日 11:46

2个答案 按时间排序 按投票排序

0 0

采纳的答案

逻辑写的不对

改成

pstmt = conn.prepareStatement(sql);
while(br.readLine() != null){
   conn.setAutoCommit(false);
   count++;
   String str = br.readLine().toString().trim();
   String s1 = str.substring(0, str.indexOf(","));
   String s2 = str.substring(str.indexOf(",")+1,str.length());
   pstmt.setString(1, s1);
   pstmt.setString(2, s2);
   pstmt.addBatch();
   if(count%500 == 0){
       pstmt.executeBatch();
       conn.commit();
   }
   System.out.println("已插入"+count+"条数据");
}

if(count%500!=0) {
       pstmt.executeBatch();
       conn.commit();
}


你之前的逻辑会每次循环创建一个pstmt 这样只有第500个可以插入

2012年9月20日 12:08
0 0

建议使用:JDBC addBatch,executeBatch
addBatch(String):添加需要批量处理的SQL语句或是参数;
executeBatch();执行批量处理语句;
你可以把一大堆的insert 语句放入在addBatch(sql);中
Statement st = conn.createStatement();
st.addBatch(sql1);
st.addBatch(sql2);
...
st.addBatch(sqln);
st.executeBatch();

2012年9月20日 11:55

相关推荐

    jdbc-批量插入数据

    本文将深入探讨如何使用JDBC进行批量插入数据,这在处理大量数据时能显著提高性能。 批量插入数据是数据库操作中常见的一种优化策略,特别是在数据分析、数据迁移或大数据处理等场景。传统的单条插入方式可能会导致...

    软件测试中使用JDBC插入大量数据的性能测试

    jdbc数据软件测试中使用JDBC插入大量数据的性能测试使用jdbc向数据库插入100000条记录,分别使用statement,PreparedStatement,及PreparedStatement+批处理3种方式进行测试:1、使用statement插入100000条记录...

    jdbc批量插入大字段

    在Oracle数据库中,Blob类型用于存储大量的二进制数据...总之,批量插入大字段是处理大量Blob数据的关键策略,通过JDBC提供的批处理功能,结合合理的事务管理和内存管理,可以显著提升Oracle数据库中的大数据插入效率。

    批量插入大量数据

    在数据库操作中,批量插入大量数据是常见的性能优化策略,特别是在大数据处理或系统初始化时。批量插入能够显著减少网络通信次数,提升效率,降低数据库事务的开销。本例展示了如何在4秒内高效地插入10万条数据,...

    使用JDBC插入大量数据的性能测试

    使用jdbc向数据库插入100000条记录,分别使用statement,PreparedStatement,及PreparedStatement+批处理3种方式进行测试:1、使用statement插入100000条记录  使用jdbc向数据库插入100000条记录,分别使用...

    Mybatis与JDBC批量插入MySQL数据库性能测试

    在数据库操作中,批量插入(Batch Insert)是一种提高性能的有效方式,尤其是在处理大量数据时。本文将探讨Mybatis和JDBC在批量插入MySQL数据库时的性能差异,并提供相关的测试资源。 首先,JDBC(Java Database ...

    JDBC批量插入 更新 删除等操作

    批量操作是指在一次数据库连接中执行多次SQL语句的操作,这种方式能显著提高程序性能,尤其是在处理大量数据时。 **批量插入**主要用于数据导入和日志记录等场景。例如,在日志系统中,通常会将日志信息先写入到...

    java实现jdbc批量插入数据

    批量插入数据是一种提高数据库操作性能的重要技术,尤其在处理大量数据时。本篇文章将详细介绍如何使用Java实现JDBC批量插入数据,并比较三种常见的JDBC批量插入编程方法。 **方法一:使用PreparedStatement加批量...

    使用 JDBC 将 XML 中的数据插入到数据库

    在IT行业中,数据库管理和数据处理是至关重要的环节。XML(eXtensible Markup Language)是一种广泛应用的数据交换格式,尤其在Web服务和数据存储中...在处理大量数据时,可能还需要批量插入或使用流式处理来提高效率。

    JDBC连接MySQL数据库批量插入数据过程详解

    批量插入数据是指将大量数据批量插入到数据库中。在本文中,我们使用JDBC连接MySQL数据库,然后使用PreparedStatement批量插入数据。PreparedStatement是JDBC API中的一种预处理语句,它能够提高批量插入数据的效率...

    利用poi获取excel数据批量插入大量数据到mysql

    在IT行业中,处理大量数据是常见的任务之一,尤其是在数据分析、报表生成或数据迁移等领域。本教程将详述如何使用Apache POI库读取Excel数据,并通过Java的JDBC接口批量插入到MySQL数据库中。Apache POI是Java平台上...

    JDBC数据同步

    - **性能优化**:大量数据同步时,批量操作比单条插入更快,避免频繁的数据库交互。 - **并发控制**:如果多线程环境下同步,需考虑并发控制,防止数据冲突。 ### 文件`transData`的关联 `transData`可能是一个...

    jdbc批量操作数据分析与实例

    这种方式简单易实现,但当需要插入大量数据时,其性能会明显下降。 - **批量插入**:指一次性提交多条插入语句。这种方法可以显著提高数据插入的效率,尤其是在处理大量数据时。 #### 三、示例代码分析 本节将详细...

    Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率)

    在Java开发中,当需要向MySQL数据库大量插入数据时,使用JDBC的批量处理功能可以显著提高效率。本文将详细讲解如何使用JDBC批量插入10万条数据,并探讨其背后的原理和优化策略。 批量处理在JDBC中主要通过Statement...

    jdbc连接数据库的方式2

    由于存在这二个问题,因此,我建议使用locator的方法来插入、更新或获取LOB的值。  8、使用SQL92语法调用存储过程  在调用存储过程时,我们可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并没有什么实际的...

    用java程序怎么实现200ms往数据库中插入10000条数据

    如果我们需要插入大量数据,可以使用批量插入方式来提高效率。我们可以使用 `addBatch()` 方法将多个插入语句添加到批量中,然后使用 `executeBatch()` 方法执行批量插入操作。 优化插入性能 为了提高插入性能,...

    插入数据到数据库

    - **批量插入**:如果你需要插入大量数据,可以使用`BULK INSERT`(在某些数据库系统中)或构建一个包含多行的`INSERT`语句,以提高效率。 - **错误处理**:编写健壮的代码来捕获和处理可能出现的异常,如网络问题、...

    ORACLE数据库中插入大字段数据的解决方法

    当插入大量相似数据时,使用绑定变量能有效防止SQL语句硬解析,提高执行效率。例如,使用PL/SQL匿名块,将大字段作为参数传递。 4. **使用流接口**: 对于非常大的字段,可以利用Oracle的流API(PLS_INTEGER型...

    JDBC数据访问技术.rar

    - 批量处理:当有大量数据操作时,使用批处理可以大大提高效率。 - 连接池:通过连接池管理数据库连接,避免频繁创建和关闭连接,提高系统性能。 总结来说,JDBC是Java开发中与数据库交互的核心技术,它提供了丰富...

Global site tag (gtag.js) - Google Analytics