环境   UNIX
数据库 Oracle 10g问题 
  现在要向数据库插入7亿条数据,就一个字段,要求以100条为单位成为乱序状态,
  通过什么方式最方便,最快,怎么写???麻烦各位了
高分在线等待

解决方案 »

  1.   

    数据准备好了还是随机数?如果准备好的就没办法,导入数据咯。随机的话用
    insert into table_name (column ) values (dbms_random.random);
      

  2.   

    数据没有准备好 第一个字段是随机数 当然要保证7亿条数据不能重复
    然后后面的字段可以是0如果用PL/SQL的话  怎么写多重循环呢??
      

  3.   

    CREATE OR REPLACE PROCEDURE INSERTAMOUNTTEST
    (
    ED_NUM        IN     NUMBER     //700000000
    )
    IS
    BEGIN
    DECLARE
           A        NUMBER IS 0;     
           BASENUM  NUMBER IS 100;   
           I        NUMBER IS 0;    
           Y        NUMBER IS 0;    
    begin
      FOR A..ED_NUM/100 LOOP     
        I = 100*A;
        FOR I..(100*A+50) LOOP    
          INSERT INTO tb values(i,'3','3','3',100,'0');    
          INSERT INTO tb values(BASENUM-Y,'3','3','3',100,'0');
          Y++;
        END LOOP;
        BASENUM = BASENUM+100;
        Y=0;
      END LOOP
    end;
    END;帮忙看以下  这样一来对不对??
      

  4.   

    试试Eric_1999(╙@^@╜) 的方法
    调用oracle自己的包
    dbms_random.random
      

  5.   

    搞三台机器,每个机器开5个线程,同时insert,速度应该快很多
      

  6.   

    以前写的一个多线程select的例子,把它改成insert就可以了:)import java.sql.*;public class MyThread extends Thread 

        private int count= 1;
        private int Num;
        
        private String    dbURL;
        private String    UserID;
        private String    PassWD;   
        private Statement Stm;
        
        private String    strSQL = "select * from aaa";
        
        public MyThread(int num)
        { 
    dbURL  = "jdbc:odbc:odbcname";
    UserID = "sa";
    PassWD = "123456";    

    LinkDB();

    Num    = num; 
    System.out.println("创建线程 " + Num);
        } 
        
        public MyThread(String strODBC, String UserID, String PWD, int num) {
    dbURL       = "jdbc:odbc:" + strODBC;
    this.UserID = UserID;
    PassWD      = PWD; LinkDB();

    Num         = num; 
    System.out.println("创建线程 " + Num);
        }        public void LinkDB() {
         try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection cnn = DriverManager.getConnection(dbURL, UserID, PassWD);
    Statement  stm = cnn.createStatement();
    Stm            = stm;
    }
    catch (Exception e) {
    e.printStackTrace();
    }
        }    public void ExecQuery(String strSQL) {
         try {
             ResultSet Rst = Stm.executeQuery(strSQL);
             
             if (Rst.next()) {
                 System.out.println("count = " + count + "\tNum = " + Num + 
                                    "\t*****" + Rst.getString("Emp"));
             }
             
             Rst.close(); 
         }
         catch (Exception e) {
             e.printStackTrace();
         }
        }         public void run() {
         try
         {
         ExecQuery(strSQL);
            }
            catch (Exception e)
            {
             e.printStackTrace();
            }
    while(true) { 
    System.out.println("线程 " + Num + ":计数 " + count); 
    if(++count== 2) return; 
    }
        }

        public static void main(String[] args)
        { 
    for(int i = 0; i < 20; i++) { //创建20个线程
    new MyThread(i+1).start(); 

        }
    }