如题,如何将大数据量的6万条记录excel导入ORACLE10G,
要求如下:
1、大数据量6万条
2、3层环境下、客户端无装ORACLE客户端
3、必须为EXCEL直接导入,不得转为文本或者其他数据库格式

解决方案 »

  1.   

    1和2,找个3层的delphi例子参考。
    3、客户端用一个ODBC源连接EXCEL文件,建ODBC时driver选Driver to Microsoft Excel,用ADO或BDE
    操作这个ODBC都可以。
      

  2.   

    procedure TFrmDdgl.btn_seleClick(Sender: TObject);
     var p1,p2:string; //连接参数
        p,p3:string;
    begintry
    if dlgopen.Execute then
     begin
       edt_upload.Text:=dlgopen.FileName; end;
     if edt_upload.Text<>'' then
     begin
      p1:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=';
      p2:=';Mode=Share Deny None;Extended Properties=Excel 8.0;Persist Security Info=False';
      p3:=edt_upload.Text;
      p:=p1+p3+p2;
      adoconn.ConnectionString:=p;
      adoconn.Open;
      adoq.Open;
      btn_sele.Enabled:=false;
      btn_upload.Enabled:=true;
      btn_reset.Enabled:=true;
     end;except
      on exception do   begin
        adoq.Close;
        adoconn.Close;
        edt_upload.Text:='';
        btn_upload.Enabled:=false;
        btn_sele.Enabled:=true;
        btn_reset.Enabled:=false;   end;end;
    以上用ADO连接EXCEL,然后就可以用SQL语句拿出数据,用CLIENTDATASET把数据插入到ORACLE里就可以了
    你用OLE也行,未必非要用ADO
    客户端不需要ORACLE
      

  3.   

    期待更好的方案,楼上的方案在三层下效率低下,我客户客户端使用ADSL,上传只有512K,数据量过大,容易死掉.
      

  4.   

    1.我用的还行,用ADO读固定格式是比较快的,我放了进度条,所以不会让程序假死,不过数据量不大,每次千把条记录,我侧是电信网络,对方是网通ADSL。2.先upload到三层服务器上(想压缩也行),然后三层服务器后台程序读出队列中上传的EXCEL文件插入ORACLE,上传效率是很高,但反馈结果反应慢点(得等上传完毕后才能检查出格式是否正确).
      

  5.   

    to NicolasCage:
    我一直使用你的这种方法,但总是上传过程中死掉。所以才来找其他的方法。
    我测试的结果是分批上上传,每次100条记录是最快的,但是整个过程时间太长。
      

  6.   

    如果不需要严格的检测数据格式什么的,把记录分割,多线程上传我上面说的两种方式我都有用过
    第二种不过是通过网页上传,数据库里形成队列,然后我在WEB服务器侧写了个后台导入程序读队列然后找到EXCEL文本,再到数据
    未导入标志0,入中标志为9,导入完成就设置成1,导入错误,标志2等等,导入完成就可以提示用户或在导入成功表里列出,用户可以随时关注导入情况,导完可以给个提示。客户端的话那就非常快了只是FTP上传个文件的时间,中间没什么数据处理过程,就算死掉也是你后台程序的事(做好保护就没问题了),客户端不会死,哈
      

  7.   

    你第二种方法中,EXCEL文件上传后,用的什么方法导入数据库的
      

  8.   

    to tdskee :
    你有的程序是什么样的,能否把代码发给我