现在Excel表中有1000条纪录,我想用程序控制成批的导入到Sql Server 2000中
速度要快,当然不能是读一条插一条了,而要用批处理。
谢谢大家。
如有可能,贴出部分代码示例,特别是ADOQuery的批更新操作,还有用哪
种方式读取Excel表的记录内容。

解决方案 »

  1.   

    excel数据读到ADODataSet里面再用一个ADODataSet select * from sqltable where 1 =0 一条一条往里写才1000多条数据,不用什么特别的方法吧
      

  2.   

    不要使用ole,我把我以前写的一些给你,你可以先用adotable打开,再一对一的添加到连接到sql server的adotable.经过摸索,我终于找到了方便快捷的通过jet把excel数据导出方法,我把我的一些经验写出来,希望对后人有帮助.
    假设有一个excel表d:\在职职工库.xls,簿中有一个表在职职工,其中有如下数据
               2002年5月职工花名册
    序号     姓名     性别    民族   工资
      1      张三       男     汉    800.00
      2      李四       男     回    1200.00
      3      张芸       女     汉    852.00
      4     何天荣      男     满    962.00现要把其中的职工数据导出到d:\zghmc.dbf.首先用excel打开d:\在职职工库.xls,选择包含职工数据的区域,不包括标题"2002年5月职工花名册",执行"插入->名称->定义",输入zgk,为所选的数据定义一个名称,关闭excel.在project中加入一个ADOConnection1、一个ADOQuery1,添加以下代码:
    ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\在职职工库.xls;Extended Properties=excel 8.0;Persist Security Info=False';
    ADOQuery1.Connection:= ADOConnection1;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select * into zghmc in "d:\" "dBASE 5.0;" from zgk' );
    ADOQuery1.ExecSQL;
    ADOQuery1.Close;然后编译运行,就把excel中的职工数据导出到d:\zghmc.dbf中了。
    如果要在程序中显示excel中的数据,添加一个ADOTable1,设置Connection为ADOConnection1就可以了.
      

  3.   

    有没有更好的方法,我要避免频繁的与SQL SERVER服务器进行Insert操作。
    就是说所有的更新操作先在本地缓存中操作,最后所有的完成后再一起提交。
    批量更新,我用的ADOConnection和ADOQuery控件,操作都是SQL语句,不知能否支持这样的操作?
      

  4.   

    用的ADOConnection和ADOQuery控件那你生成一个超长SQL去执行好了 ft
      

  5.   

    1.将excel数据读出直接生成bcp格式文件,用bcp一次全部解决,最快没过于此,
    2.另还有一快法,就是用sql server的DTS,要用程序控制是很麻烦,好象对Delphi
    来说不容易用vb,vc++很方便的