设为首页收藏本站

Scripts 学盟

 找回密码
 加入学盟

QQ登录

只需一步,快速开始

查看: 2048|回复: 1
打印 上一主题 下一主题

java 批量插入数据 [复制链接]

Rank: 8Rank: 8

跳转到指定楼层
1#
那个谁 发表于 2011-6-27 15:14:05 |只看该作者 |倒序浏览
  1. package jdbc2;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.PreparedStatement;
  5. import java.sql.SQLException;

  6. public class Mysql {
  7.         public static void main(String[] args) {
  8.                 test_mysql();
  9.                 //test_mysql_batch();
  10.                 //test_oracle();
  11.                 //test_oracle_batch();
  12.         }
  13.         /**
  14.          * mysql非批量插入10万条记录
  15.          * 第1次:17437 ms
  16.          * 第2次:17422 ms
  17.          * 第3次:17046 ms
  18.          */
  19.         public static void test_mysql(){
  20.                 String url="jdbc:mysql://192.168.10.139:3306/test";
  21.                 String userName="root";
  22.                 String password="1234";
  23.                 Connection conn=null;
  24.                 try {      
  25.                       Class.forName("com.mysql.jdbc.Driver");      
  26.                       conn =  DriverManager.getConnection(url, userName, password);      
  27.                       conn.setAutoCommit(false);      
  28.                       String sql = "insert into t_user(id,uname) values(?,?)";      
  29.                       PreparedStatement prest = conn.prepareStatement(sql);      
  30.                       long a=System.currentTimeMillis();
  31.                       for(int x = 0; x < 100000; x++){      
  32.                          prest.setInt(1, x);      
  33.                          prest.setString(2, "张三");      
  34.                          prest.execute();
  35.                       }      
  36.                       conn.commit();      
  37.                       long b=System.currentTimeMillis();
  38.                       System.out.println("MySql非批量插入10万条记录用时"+ (b-a)+" ms");
  39.                 } catch (Exception ex) {
  40.                         ex.printStackTrace();
  41.                 }finally{
  42.                         try {
  43.                                 if(conn!=null)conn.close();
  44.                         } catch (SQLException e) {
  45.                                 e.printStackTrace();
  46.                         }   
  47.                 }
  48.         }
  49.         /**
  50.          * mysql批量插入10万条记录
  51.          * 第1次:17437 ms
  52.          * 第2次:17562 ms
  53.          * 第3次:17140 ms
  54.          */
  55.         public static void test_mysql_batch(){
  56.                 String url="jdbc:mysql://192.168.10.139:3306/test";
  57.                 String userName="root";
  58.                 String password="1234";
  59.                 Connection conn=null;
  60.                 try {      
  61.                         Class.forName("com.mysql.jdbc.Driver");      
  62.                         conn =  DriverManager.getConnection(url, userName, password);      
  63.                         conn.setAutoCommit(false);      
  64.                         String sql = "insert into t_user(id,uname) values(?,?)";      
  65.                         PreparedStatement prest = conn.prepareStatement(sql);      
  66.                         long a=System.currentTimeMillis();
  67.                         for(int x = 0; x < 100000; x++){      
  68.                                 prest.setInt(1, x);      
  69.                                 prest.setString(2, "张三");      
  70.                                 prest.addBatch();   
  71.                         }      
  72.                         prest.executeBatch();      
  73.                         conn.commit();      
  74.                         long b=System.currentTimeMillis();
  75.                         System.out.println("MySql批量插入10万条记录用时"+ (b-a)+" ms");
  76.                 } catch (Exception ex) {
  77.                         ex.printStackTrace();
  78.                 }finally{
  79.                         try {
  80.                                 if(conn!=null)conn.close();
  81.                         } catch (SQLException e) {
  82.                                 e.printStackTrace();
  83.                         }   
  84.                 }
  85.         }
  86.         /**
  87.          * oracle非批量插入10万条记录
  88.          * 第1次:22391 ms
  89.          * 第2次:22297 ms
  90.          * 第3次:22703 ms
  91.          */
  92.         public static void test_oracle(){
  93.                 String url="jdbc:oracle:thin:@192.168.10.139:1521:orcl";
  94.                 String userName="scott";
  95.                 String password="tiger";       
  96.                 Connection conn=null;
  97.                 try {      
  98.                         Class.forName("oracle.jdbc.OracleDriver");      
  99.                         conn =  DriverManager.getConnection(url, userName, password);      
  100.                         conn.setAutoCommit(false);      
  101.                         String sql = "insert into t_user(id,uname) values(?,?)";      
  102.                         PreparedStatement prest = conn.prepareStatement(sql);      
  103.                         long a=System.currentTimeMillis();
  104.                         for(int x = 0; x < 100000; x++){      
  105.                                 prest.setInt(1, x);      
  106.                                 prest.setString(2, "张三");      
  107.                                 prest.execute();
  108.                         }
  109.                         conn.commit();      
  110.                         long b=System.currentTimeMillis();
  111.                         System.out.println("Oracle非批量插入10万记录用时"+ (b-a)+" ms");
  112.                         conn.close();   
  113.                 } catch (Exception ex) {
  114.                         ex.printStackTrace();
  115.                 }finally{
  116.                         try {
  117.                                 if(conn!=null)conn.close();
  118.                         } catch (SQLException e) {
  119.                                 e.printStackTrace();
  120.                         }   
  121.                 }
  122.         }
  123.         /**
  124.          * oracle批量插入10万条记录
  125.          * 第1次:360 ms
  126.          * 第2次:328 ms
  127.          * 第3次:359 ms
  128.          */
  129.         public static void test_oracle_batch(){
  130.                 String url="jdbc:oracle:thin:@192.168.10.139:1521:orcl";
  131.                 String userName="scott";
  132.                 String password="tiger";       
  133.                 Connection conn=null;
  134.                 try {      
  135.                         Class.forName("oracle.jdbc.OracleDriver");      
  136.                         conn =  DriverManager.getConnection(url, userName, password);      
  137.                         conn.setAutoCommit(false);      
  138.                         String sql = "insert into t_user(id,uname) values(?,?)";      
  139.                         PreparedStatement prest = conn.prepareStatement(sql);      
  140.                         long a=System.currentTimeMillis();
  141.                         for(int x = 0; x < 100000; x++){      
  142.                                 prest.setInt(1, x);      
  143.                                 prest.setString(2, "张三");      
  144.                                 prest.addBatch();
  145.                         }
  146.                         prest.executeBatch();      
  147.                         conn.commit();      
  148.                         long b=System.currentTimeMillis();
  149.                         System.out.println("Oracle批量插入10万记录用时"+ (b-a)+" ms");
  150.                         conn.close();   
  151.                 } catch (Exception ex) {
  152.                         ex.printStackTrace();
  153.                 }finally{
  154.                         try {
  155.                                 if(conn!=null)conn.close();
  156.                         } catch (SQLException e) {
  157.                                 e.printStackTrace();
  158.                         }   
  159.                 }
  160.         }
  161. }
复制代码
1

查看全部评分

分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享分享0 收藏收藏0

管理员

超级大菜鸟

Rank: 9Rank: 9Rank: 9

2#
混混@普宁.中国 实名认证  发表于 2011-6-27 16:23:48 |只看该作者



executeBatch 这么牛X

使用道具 举报

您需要登录后才可以回帖 登录 | 加入学盟

手机版|Scripts 学盟   |

GMT+8, 2024-4-30 03:39 , Processed in 1.084904 second(s), 12 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部