execl表能导入sybase数据库吗,如果能,应该怎么导入呢?

解决方案 »

  1.   

    一条条读出来然后insert into
      

  2.   

    先用ADOConnection连接Excel文件,然后用ADOQuery打开要导入的表。假设你已经用ADO连接好了Sybase。用什么Insert好呢?一种是用Command,一种是用query或者Table。如果用前者的话就是
    while not ADOQuery.eof do
    Command.text:='Insert xxxx into 表
    Command.execute。如果是用query的话,那就是
    query.insert;
    while not ADOQuery.eof do
    query.Fileds[1]:=ADOQuery.Fields[1];
    query.Fields[n]:=ADOQuery.Fields[n];上面只是一个思路,并不意味着语法正确,仅供参考。
      

  3.   

    看看这个贴子吧,如果有导入SYBASE的话你就赚了,速度比一条条导快多了,一万条也只有几秒钟:
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=1691966
      

  4.   

    呵呵没搞过sybase, 但还是Up一下
      

  5.   

    回复人: navyfish(深蓝色的鱼) ( ) 信誉:100  2004-11-11 08:50:00  得分: 0  
     
     
       看看这个贴子吧,如果有导入SYBASE的话你就赚了,速度比一条条导快多了,一万条也只有几秒钟:
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=1691966
      
     
    ===============================================================================
    你这个方法是很好,我早就知道了,不过如果EXCEL的表结构和你的数据库的结构完全不一样的时候你就没辙了,尤其是EXCEL是一个单表,而数据库是个多表操作的规范化数据表就彻底不行了。
      

  6.   

    可以用ReadWriteII控件,无需安装OFFICE2K!
      

  7.   

    一条条读出来然后insert into。
    然后可以设定1000条提交一次。
      

  8.   

    procedure TForm1.Button1Click(Sender: TObject);
    var i,j:integer;
    begin
    opendialog1.InitialDir:=ExtractFileDir(paramstr(0));//文件的打存放初始路径
    opendialog1.Execute;
    Try
    ExcelApplication1.Connect;//EXCEL应用程序
    Except
    MessageDlg('Excel may not be installed',mtError, [mbOk], 0);
    Abort;
    End;
    ExcelApplication1.Visible[0]:=True;
    ExcelApplication1.Caption:='Excel Application';
    try 
    excelapplication1.Workbooks.Open(opendialog1.FileName,
    null,null,null,null,null,null,null,null,null,null,null,null,0);//打开指定的EXCEL 文件
    except
    begin
    ExcelApplication1.Disconnect;//出现异常情况时关闭
    ExcelApplication1.Quit;showmessage('请选择EXCEL电子表格!');
    exit;
    end;
    end;
    ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);//ExcelWorkbook1与Eexcelapplication1建立连接
    ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);//Excelworksheet1与Excelworkbook1建立连接 
    //开始从EXCEL中取数,放到stringgrid1中,取完数后关闭EXCEL
    for i:=1 to 1000 do//最大取值1000
    for j:=1 to 6 do
    begin
    if trim(excelworksheet1.cells.item[i+1,1])<>'' then
    begin
    stringgrid1.rowCount:=i+1;
    stringgrid1.Cells[j,i]:=ExcelWorksheet1.Cells.Item[i+1,j];
    end
    else
    begin
    label3.caption:=inttostr(i-1);
    ExcelApplication1.Disconnect;
    ExcelApplication1.Quit;
    //将第一条数据赋给编辑框
    edit2.text:=stringgrid1.Cells[1,1];
    edit1.text:=stringgrid1.Cells[2,1];
    edit3.text:=stringgrid1.Cells[3,1];
    edit4.text:=stringgrid1.Cells[4,1];
    edit5.text:=stringgrid1.Cells[5,1];
    exit;
    end;
    end;
    end;
      

  9.   

    to :fancylee(小恐龙) 
      程序有问提的吧,怎么我execl表中才400来条记录,用你的程序一执行就死在那儿了呢
      

  10.   

    TO :  pinyu(品雨)是不是可以考虑先导到临时表,再用存储过程处理?
    至少比逐条处理快.
      

  11.   

    什么临时表?那你就综合一下navyfish(深蓝色的鱼)的方案,先把它整体导到临时表里,再用SQL语句完成剩下的工作倒也是一个方案,不过临时表你需要考虑的是用全局的还是用局部临时表。
      

  12.   

    to: scer4514() 
      程序根据你的需求自己改一下就可以了。