如何将excel内容导入oracle,三层环境下 如题,如何将大数据量的6万条记录excel导入ORACLE10G,要求如下:1、大数据量6万条2、3层环境下、客户端无装ORACLE客户端3、必须为EXCEL直接导入,不得转为文本或者其他数据库格式 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1和2,找个3层的delphi例子参考。3、客户端用一个ODBC源连接EXCEL文件,建ODBC时driver选Driver to Microsoft Excel,用ADO或BDE操作这个ODBC都可以。 procedure TFrmDdgl.btn_seleClick(Sender: TObject); var p1,p2:string; //连接参数 p,p3:string;begintryif 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 期待更好的方案,楼上的方案在三层下效率低下,我客户客户端使用ADSL,上传只有512K,数据量过大,容易死掉. 1.我用的还行,用ADO读固定格式是比较快的,我放了进度条,所以不会让程序假死,不过数据量不大,每次千把条记录,我侧是电信网络,对方是网通ADSL。2.先upload到三层服务器上(想压缩也行),然后三层服务器后台程序读出队列中上传的EXCEL文件插入ORACLE,上传效率是很高,但反馈结果反应慢点(得等上传完毕后才能检查出格式是否正确). to NicolasCage:我一直使用你的这种方法,但总是上传过程中死掉。所以才来找其他的方法。我测试的结果是分批上上传,每次100条记录是最快的,但是整个过程时间太长。 如果不需要严格的检测数据格式什么的,把记录分割,多线程上传我上面说的两种方式我都有用过第二种不过是通过网页上传,数据库里形成队列,然后我在WEB服务器侧写了个后台导入程序读队列然后找到EXCEL文本,再到数据未导入标志0,入中标志为9,导入完成就设置成1,导入错误,标志2等等,导入完成就可以提示用户或在导入成功表里列出,用户可以随时关注导入情况,导完可以给个提示。客户端的话那就非常快了只是FTP上传个文件的时间,中间没什么数据处理过程,就算死掉也是你后台程序的事(做好保护就没问题了),客户端不会死,哈 你第二种方法中,EXCEL文件上传后,用的什么方法导入数据库的 to tdskee :你有的程序是什么样的,能否把代码发给我 我有一个问题 stringgrid输出问题 请教FILEREAD()函数读取汉字TXT文件的问题 delphi里的时间控件具体怎么用啊?急…………………… treeview,选中某一节点时,怎样建下一级节点?? Delphi中做网页的问题 高手快来啊,在reportbuilder中如何画一条斜线,救命啊!!! DBGrid问题 怎样通过编码取得当前机器Cpu的序列号? 请教Access 2000数据库与SQL 2000数据库有什么区别? 用Inno Setup做一个dll的安装程序时,安装程序的目录是不是必选的(不是dll的目标目录),能否去掉? 如图
3、客户端用一个ODBC源连接EXCEL文件,建ODBC时driver选Driver to Microsoft Excel,用ADO或BDE
操作这个ODBC都可以。
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
我一直使用你的这种方法,但总是上传过程中死掉。所以才来找其他的方法。
我测试的结果是分批上上传,每次100条记录是最快的,但是整个过程时间太长。
第二种不过是通过网页上传,数据库里形成队列,然后我在WEB服务器侧写了个后台导入程序读队列然后找到EXCEL文本,再到数据
未导入标志0,入中标志为9,导入完成就设置成1,导入错误,标志2等等,导入完成就可以提示用户或在导入成功表里列出,用户可以随时关注导入情况,导完可以给个提示。客户端的话那就非常快了只是FTP上传个文件的时间,中间没什么数据处理过程,就算死掉也是你后台程序的事(做好保护就没问题了),客户端不会死,哈
你有的程序是什么样的,能否把代码发给我