将一个数据库中的表复制到另一个数据库中的同样结构的表中。
如果已经有同样的记录,就不复制。
是否有整表复制的方法?

解决方案 »

  1.   

    例子:
    Dim Conn As New ADODB.Connection
    Dim Strconn As String
    Strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DatabasePath & ";Persist Security Info=False"
    Conn.CursorLocation = adUseClient
    Conn.Open StrconnRs.Open "Select * into table from " & TableName, Conn, adOpenStatic, adLockBatchOptimistic
      

  2.   

    设有A表(ID,Name),B表(ID,Name).其中ID为主键。
    现将B表中不存在A表的数据插入A表
    SQL语句如下:
    insert into A(ID,name) 
    select B.id,B.name from B where B.id not in(SELECT B.id
      FROM B,A where (B.id=A.id))本SQL语句要求AB两表中主键相同的记录的其余信息应该相同。因为楼主所说的同样的记录,如果两表的主键值相同,而其余字段值不同的话,那么无论
    你怎么插入肯定是会出错的。
    除非你的数据库表没有主键
      

  3.   

    create table a as (select * from b)
      

  4.   

    楼主所说的源表(A)和目的表(B)
    因为从A表中选择出的记录还要和B表进行比较,
    所以显然B表是已经存在的,
    那么就不能用SELECT ...INTO... 语句(此语句是用来将选择出来的列而新建一张表)就从解决问题的方法来说可以用
     LGYAN(紫衣随想) 的INSERT INTO语句来实现:
    Insert into B
    Select * from A where id not in
    (Select id from B)已经通过验证.
      

  5.   

    那么楼主的要求就好办了。不过要两条语句。1、从目的表B中删除所有A表的数据
    Delete from B where ID in(select ID from A)2、添加A表的数据到B表中
    insert into B(ID,name) 
    select id,name from A不就行了吗?
      

  6.   

    刚研究过DTS,不知道你想不想用
      

  7.   

    1、如果是在sql server中就用触发器实现
    2、如果想用ado实现
       如果是完全保持一致 ,在第一次同步时
       con.execute "Delete From Table B"
       insert into b select * from A
       然后从表B中删除所有A表的数据
      Delete from B where 主键 in(select 主键 from A)
      添加A表的数据到B表中
      insert into B         select * from A
      不知道楼主用过sql server的导入和导出功能没有,系统提供的方法好象也是通过insert语句实现的。  
      

  8.   

    没有直接的办法,自己写判断的语句,sql无法直接实现.
      

  9.   

    更新bs已经有的
    update tt 
         set tt.LXBH=t1.LXBH,
             tt.LBBH=t1.LBBH,
             tt.ffrq=t1.ffrq--必须要加上,不然就会出错
    from (select * from T where (DATEDIFF([day], FFRQ, getdate()) = 0)) t1,njgf.book.dbo.T tt
    where tt.bs =t1.bs
    --插入不存在的
    insert into njgf.book.dbo.T 
          select * 
          from T 
          WHERE (DATEDIFF([day], FFRQ, getdate()) = 0) 
                and T.BS not in 
                      (select BS from njgf.book.dbo.T 
                       where (DATEDIFF([day], FFRQ, getdate()) = 0)
                      )
    你参考一下
    用selet * into  肯定不行。
    用dts比较方便
      

  10.   

    select DISTINCT * into ...
      

  11.   

    B 表的信息不能删除,因为正在使用中,只能更新。采用两条SQL语句的思路也很好。只是不知DTS是什么,请指教。
      

  12.   

    DTS是SQL Server的数据导入导出工具。它可以自动生成VB模块。但是绝对不好用。因为那是整表输入输出的,我可以向你保证你要是去用DTS,绝对会是浪费你的时间。建议就是使用我的两条SQL语句吧,那样效率应该是最好的。