我做一个项目,需要把不同地方的数据库汇总到一个数据库里,当然这些数据库的表结构相同,请问各位高手,怎样在DELPHI中,用程序实现数据库的追加?谢谢!!!

解决方案 »

  1.   

    两个 
    ADOConnection1
    ADOTable1  和                       ADOTable2  
    connection :ADOConnection1         connection :ADOConnection1
    TableName:表1                      TableName:表2with ADOTable1 do
    begin
     try
      active:=true; //打开1表
      first;        //将1表定位于第一条记录
      while not Eof  do   //如果没有到1表的表尾
        begin
        ADOTable2.Active:=true;//打开2表
        ADOTable2.insert;      //插入一条记录
        ADOTable2.fields[x].ASString:=fields[y].asString;
        {将1表中的第y字段的值赋给2表中的第x字段
         .......
        .......}
        ADOTable2.post;//将插入2表的记录写入数据库
        next;  //1表的指针指向下一条记录
        end;
      finally
        ADOTable1.active:=false;
        active:=false;//关闭两表
     end;
      

  2.   

    另外一个方法,用ADOQuery。
    ADOQuery1.close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.add('insert into tablename in ''sybx.mdb'' select * from tablename in ''a:\sjcj.mdb''' );
    ADOQuery1.execSQL;
    速度怎么样就不知道了。
      

  3.   

    先用 ADO 连到服务器上,要是表名相同的话可以先执行
    select name from sysobjects where xtype ='U';
    来获取所有的用户表。将所有的用户表放入一个数组中,然后遍历数组,生成类似下面的语句:
    insert into dst.表名 select * from src.表名;执行上面的语句时要求 dst 数据库中的相关表与 src数据库中的表的字段顺序等完全相同。
      

  4.   

    --sql server
    sp_attach_db
    将数据库附加到服务器。语法
    sp_attach_db [ @dbname = ] 'dbname'
        , [ @filename1 = ] 'filename_n' [ ,...16 ]参数
    [@dbname =] 'dbname'要附加到服务器的数据库的名称。该名称必须是唯一的。dbname 的数据类型为 sysname,默认值为 NULL。 [@filename1 =] 'filename_n'数据库文件的物理名称,包括路径。filename_n 的数据类型为 nvarchar(260),默认值为 NULL。最多可以指定 16 个文件名。参数名称以 @filename1 开始,递增到 @filename16。文件名列表至少必须包括主文件,主文件包含指向数据库中其它文件的系统表。该列表还必须包括数据库分离后所有被移动的文件。返回代码值
    0(成功)或 1(失败)结果集
    无注释
    只应对以前使用显式 sp_detach_db 操作从数据库服务器分离的数据库执行 sp_attach_db。如果必须指定多于 16 个文件,请使用带有 FOR ATTACH 子句的 CREATE DATABASE。如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行 sp_removedbreplication 从数据库删除复制。权限
    只有 sysadmin 和 dbcreator 固定服务器角色的成员才能执行本过程。示例
    下面的示例将 pubs 中的两个文件附加到当前服务器。EXEC sp_attach_db @dbname = N'pubs', 
       @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', 
       @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'
      

  5.   

    insert into tablename in 'sybx.mdb' select * from tablename in 'a:\sjcj.mdb'
    =========
    這條語句的寫法不錯,可以在SQL中指定文件路徑。
      

  6.   

    楼主说的是在 SQL Server中....怎么出现了这么多的 mdb....
      

  7.   

    直接用sql语句处理,效率比较高。