返回顶部

收藏

jdbc批量数据插入的代码

更多
1899942 ,一    
1899944 ,二  
1899946 ,三 
1899948 ,四  
1899950 ,五    
1899952 ,六    
1899954 ,和  
1899956 ,在 
1899958 ,的  
1899960 ,对 
1899962 ,需 
1899964 ,大规模  
1899966 ,压力 
1899968 ,大城市 
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 
有几万条这样的数据需要插入数据库 

public class Main { 
public static void main(String[] args) throws Exception{ 
String sql = "insert into mobile_place(number,place) values(?,?)"; 
int count = 0;//计数器 
Connection conn = JDBCUtil.getConnection(); 
PreparedStatement pstmt = conn.prepareStatement(sql); 
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++;//没读取一行数据,计数器+1 
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();//用PreparedStatement的批量处理 

if(count%500==0){//当增加了500个批处理的时候再提交 
pstmt.executeBatch();//执行批处理 
conn.commit();//提交 
conn.close();//关闭数据库 
conn = JDBCUtil.getConnection();//重新获取一次连接 
conn.setAutoCommit(false); 
pstmt = conn.prepareStatement(sql); 
} 
System.out.println("已插入"+count+"条数据"); 
} 
if(count%500!=0){//while循环外的判断,为了防止上面判断后剩下最后少于500条的数据没有被插入到数据库 
pstmt.executeBatch(); 
conn.commit(); 
} 
pstmt.close(); 
conn.close(); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
} 
} 
500可以自己增大,执行效率很高。比单挑执行再插入快多了 

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; 
}

标签:java

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. hollischuang 发表 2018-07-01 07:47:16 密码保护:再有人问你Java内存模型是什么,就把这篇文章发给他。
  2. puefu.he 发表 2018-07-01 14:48:54 网易云歌词爬取(java)
  3. xubiao.zhuang 发表 2018-07-01 15:19:30 go-学习笔记
  4. lishirong 发表 2012-09-21 01:59:37 用mapXtreme Java开发web gis应用
  5. 博主 发表 2018-06-29 08:52:18 Java中的assert断言
  6. 博主 发表 2018-06-29 12:02:38 谈谈我参加Java认证考试的经历
  7. 炒饭 发表 2015-05-20 02:58:24 在Java中使用AnimatedGifEncoder生成GIF动画
  8. 炒饭 发表 2015-05-23 03:51:23 让Java Swing使用系统默认主题
  9. 炒饭 发表 2016-09-10 03:18:38 Scala对象初始化时访问成员的坑
  10. 炒饭 发表 2017-03-06 03:28:59 如何制作NES模拟器
  11. 炒饭 发表 2017-05-15 16:27:46 Java自带的性能分析工具
  12. 炒饭 发表 2017-08-19 05:53:13 用aspectj实现日志记录

发表评论