我有1000000条数据.用了 try {
     Class.forName("oracle.jdbc.driver.OracleDriver");
     con=DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.21:1521:oradb","et","et");
    
     Statement st = con.createStatement();
     for(int i=0;i<=1000000;i++){
      st.executeUpdate("insert into Authors values('"+i+"','中国人人')");
     }
} catch (Exception e) {
  e.printStackTrace();
// TODO: handle exception

System.out.print("dwad"); }
这样太慢了,有没好的方法

解决方案 »

  1.   

    这是一个存储过程的例子,其他的细节自己搜搜吧,说起来没完没了:create procedure demo is
     TYPE NumTab IS TABLE OF NUMBER(4) INDEX BY BINARY_INTEGER;
     TYPE NameTab IS TABLE OF CHAR(15) INDEX BY BINARY_INTEGER;
     pnums NumTab;
     pnames NameTab;
     t1 NUMBER(5);
     t2 NUMBER(5);
     t3 NUMBER(5); BEGIN
     FOR j IN 1..5000 LOOP -- load index-by tables
     pnums(j) := j;
     pnames(j) := ’Part No. ’ || TO_CHAR(j);
     END LOOP;
     t1 := dbms_utility.get_time;
     FOR i IN 1..5000 LOOP -- use FOR loop
     INSERT INTO parts VALUES (pnums(i), pnames(i));
     END LOOP;
     t2 := dbms_utility.get_time;
     FORALL i IN 1..5000 -- use FORALL statement
     INSERT INTO parts VALUES (pnums(i), pnames(i));
     get_time(t3);
     dbms_output.put_line(’Execution Time (secs)’);
     dbms_output.put_line(’---------------------’);
     dbms_output.put_line(’FOR loop: ’ || TO_CHAR(t2 - t1));
     dbms_output.put_line(’FORALL: ’ || TO_CHAR(t3 - t2));
    END;
      

  2.   

    这是一个存储过程的例子,其他的细节自己搜搜吧,说起来没完没了:-- 存储过程可以有参数的
    create procedure demo is
     TYPE NumTab IS TABLE OF NUMBER(4) INDEX BY BINARY_INTEGER; --自定义数组类型
     TYPE NameTab IS TABLE OF CHAR(15) INDEX BY BINARY_INTEGER; --同上
     pnums NumTab; -- 自定义数组变量
     pnames NameTab;BEGIN
     FOR j IN 1..5000 LOOP -- load index-by tables
     pnums(j) := j;
     pnames(j) := ’Part No. ’ || TO_CHAR(j);
     END LOOP;
     FORALL i IN 1..5000 -- use FORALL statement
     INSERT INTO parts VALUES (pnums(i), pnames(i));
    END demo;