表A                                                 
   pointname   pointValue
      A            1
      B            2
      C            3
      D            4
现已实现将表A中的数据完整的复制到B中。如下
表B(字段id自增,没有数据)
   id   pointname    pointValue 
    1      A             1
    2      B             2
    3      C             3
    4      D             4
我现在想实现的是—>将表A的新增部分添加到表B中。(我要用Timer控件定时刷新操作,所以每次都复制整张表是错的)举个例子:
表A
   pointname   pointValue
      A            1
      B            2
      C            3
      D            4表B
   id   pointname    pointValue 
    1      A             1
    2      B             2
这种情况下,当我点击程序中按钮的时候,只从表A中取出最后两行的数据,插入到表B中。PS:表A不允许增加新字段,表B允许添加新字段(能不添加字段实现更好)。不知道这种情况能不能实现我想要的功能!!
希望高手指点!!!
万分感激!!!!!

解决方案 »

  1.   


    表B(字段id自增,没有数据)
       id   pointname    pointValue 
        1      A             1
        2      B             2
        3      C             3
        4      D             4改成—>表B(字段id自增)
       id   pointname    pointValue 
        1      A             1
        2      B             2
        3      C             3
        4      D             4
      

  2.   

    现阶段代码如下:  OdbcConnection conn1 = new OdbcConnection();
                SqlConnection conn2 = new SqlConnection();
                OdbcCommand cmd1 = new OdbcCommand();
                SqlCommand cmd2 = new SqlCommand();
                System.Data.Odbc.OdbcDataReader dr;
                conn1.ConnectionString = connnectionString2;
                conn2.ConnectionString = connnectionString;            cmd1.Connection = conn1;
                cmd2.Connection = conn2;
                cmd1.CommandText = "SELECT Value,LastModified,Persist,DatapointID,PropID FROM DBA.DatapointValue";
                conn1.Open();
                dr = cmd1.ExecuteReader();
                conn2.Open();
                while (dr.Read())
                {
                    string insertString = "INSERT INTO DatapointValue2(Value,LastModified,Persist,DatapointID,PropID) VALUES ('{0}','{1}','{2}','{3}','{4}')";
                    insertString = string.Format(insertString, dr[0], dr[1], dr[2], dr[3], dr[4]);                cmd2.CommandText = insertString;
                    cmd2.ExecuteNonQuery();
                }
                dr.Close();
                conn1.Close();
                conn2.Close();
      

  3.   

    Insert into B(pointname,pointValue) (select pointname,pointValue from A where pointValue not in( select pointValue from B))
    假设pointValue唯一
      

  4.   

    如果是增量复制,你的做法效率本身不高先按照楼主的思路来,就是想办法把B表的最大id记录下来,这样只要把A表中比最大id大的记录复制到B表即可而实际上,如果是大数据量的导入,往往使用sql server的bcp等命令处理
      

  5.   

    楼上的各位大侠,好像A表没有自动增长那ID噢,还有,pointValue一不一定就是1,2,3,4啊
    表A
       pointname   pointValue
          A            1
          B            1
          C            3
          D            4
          D            3表B
       id   pointname    pointValue 
        1      A             1
        2      B             2
        3      C             2
        4      D             3
    不知道LZ是不是没说清呢,还是跟我这一样的,pointname   pointValue 两个值任何一个不同都要加到B里去撒?我不会,请假大鸟,搭便车问下。
      

  6.   

    确实有个列唯一—>DatapointID正在尝试3楼做法
      

  7.   

    仔细看了下 居然不是唯一 在anywhere数据库中看到列前面明明有个钥匙的....
      

  8.   

    我晕 复杂啦!! anywhere数据库中貌似是两个一起做主键的  PropID和DatapointID这两个字段前面都显示有“钥匙”   大概意思应该是这两个联合起来才是唯一的
      

  9.   

    可以,不过我的sql语句写错了~~~你可千万别抄啊。。你百度一下  insert into  select看一下用法。
      

  10.   

    表A是anywhere中的表
    表B是SQLServer中的表  
    表A中PropID和DatapointID这两个字段前面都显示有“钥匙” 大概意思应该是这两个联合做主键吧。是不是有必要..对应的表B我是不是应该也联合一下啊 怎么联合?(如果没有这个必要可以不做)
      

  11.   

    表A中PropID和DatapointID这两个字段前面都显示有“钥匙” 大概意思应该是这两个联合做主键吧
    这是联合主键,这不是关键的,关键是你A和B表是怎么关联的。。中间的关联字段是否是唯一的
    在数据库db1中要查询数据库db2的数据,相同服务器,同类型数据库是这么联表的
    select a.*,b.* from a join db2..b c on c.id=a.id
      

  12.   

    insert into tbs_xscj (
            id
           ,name
           ,address
           )
     select id+(select max(id) from tbs_xscj )
           ,name
           ,address
     from tbs_xscj_hz
    去看了下那玩意的用法。
      

  13.   

    表A
       Value    varchar   255   允许空
        LastModified    doble   允许空
       Persist        smallint    允许空
    【钥匙】 PropID     intger          不许空
     【钥匙】  DatapointID     intger     不许空
     
    这是表A字段的名字和类型表B是由我自己来设计的 
      

  14.   

    我以前写过一个比较复杂的,在我博客里留着。估计你看不懂。我现在也看不懂了!
    【钥匙】 PropID intger 不许空
     【钥匙】 DatapointID intger 不许空
    这两个合起来称为唯一键
      

  15.   

    B表的最大ID数能取到 但是A表中没有ID这个列 是不是我理解错了