本人正在开发一个管理系统,开发工具是DELPHI6,数据库用SQL SERVER 2000。原始数据是一些DBF数据表(表结构相同,只是记录不同),现在需要将这些数据表合并为一个数据表并转换为SQL SERVER 2000的数据表,请教高手应如何编程实现?盼复,感激不尽!

解决方案 »

  1.   

    可以用BatchMove 将几个表的数据导过去!!注意BatchMove的Mode属性!!
      

  2.   

    1 用btp工具或者 dts服务
    2 用OPENROWSE或者opendatasource
    insert c
    (SELECT a.*
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
       'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders1) 
       AS a
    union
    SELECT b.*
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
       'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders2) 
       AS b)3 用tbatchmove或者自己写循环
      

  3.   

    先利用BDE和Data Pump将DBF转入到SQL2000中的对应数据库中,也可直接利用SQL2000中的数据导入,然后写相应的SQL语句即可
      

  4.   

    可是我是用ADO连接SQL SERVER的,我不希望用BDE.在ADO中没有BATCHMOVE控件.
      

  5.   

    Data Pump只适用于使用BDE的数据库,若用ADO有什么方法可以实现?
      

  6.   

    最好用ADO关联好数据后通过代码一条条的转换,而且要备份好数据库!因为SQL Server和DBF数据库的很多数据并不对应,很多时候有些数据根本就转换不过去,例如时间字段!当年我曾经碰到过类似问题,例如1999-10-1,有时用户不小心输成了999-10-1,这个日期在DBF数据库中是通过的,在SQL Server数据库中不通过,系统马上停止了!你根本就不能保证用户在DBF数据库中所有的数据都正确!
      

  7.   

    补充一点:原始的DBF数据表中的数据不是固定不变的,一段时间就需要将这些数据表合并为一个数据表并转换为SQL SERVER 2000的数据表(即更新SQL SERVER 2000数据表的数据),若用Data Pump工具的话,那系统交给用户使用时且不是要用户去使用Data Pump工具进行数据表的转换?因此一定要用编程实现,请高手帮忙!
      

  8.   

    思路和平时的添加删除数据一样建立两个连接,一个连接DBF(最好通过ODBC连接),一个连接SQL(最好通过ADO连接),然后分别建立TTable和TADOQuery,至于怎么连接就不用说了吧!然后最笨的办法!var
      I: Integer;
    begin
      Table1.First;
      for I:=0 to Table1.RecoudCount-1 do
      begin
        ADOQuery1.Append;
        ADOQuery1.FieldByName('FLD1').AsString:=Table1.FieldByName('FLD1').AsString;
        //......其它字段
        ADOQuery1.Post;
        Table1.Next;
      end;
    end;这种方式是笨,而且是很低级,但是针对你的问题是最好的办法,因为有太多的数据有效性在里面!
      

  9.   

    楼上有个问题:用这种方法的话,那不是要事先就创建好SQL SERVER数据表?能不能通过程序动态创建目的数据表?
      

  10.   

    直接用SQL SERVER2000 的导入导出数据 不行吗?
      

  11.   

    SQL SERVER 2000数据表要根据原始的DBF数据表动态创建。
      

  12.   

    用SQL SERVER 2000中的DTS工具创建DTS包后如何实现定时更新?例如:在每天上午的8:00进行更新。