合并表记录

时间:2015-09-01 14:40:02

标签: c# merge sql-server-2012 db2

环境:Visual Studio 2010(C#)

问题描述:
我有一个表:tblA(来源:SQL Server 2012)
列:DrawingNo, PartNo, Test1, Test2, …总计:21列

我有另一张表:tblB(来源:DB2)
列:DrawingNo, PartNo, Company, Status总计:4列

目标1:

Loop through tblA records
        Loop through tblB records
            If tblA.DrawingNo = tblB.DrawingNo AND tblA.PartNo = tblB.PartNo then
                //skip this record
            Else
//insert into tblA a record with new DrawingNo (taken from tblB.DrawingNo) and PartNo (taken from tblB.PartNo) and blanked remaining fields
            End If

最后,我有一个表:tblC(来源:SQL Server 2012)
列:DrawingNo, cTest1, cTest2, …总计:20列

目标2:

Loop through tblC records
        Loop through tblA records (this table already update with tblB records)
            If tblC.DrawingNo = tblA.DrawingNo then
                //Insert into tblA columns from tblC.cTest1, cTest2, …
            Else
                //Do nothing
            End If

问题:

  1. 在我看来,我试图实施的逻辑并非最好的方法 达到我的目标。是否有其他方法可以提高效率?
  2. tblB的记录添加到tblA的最佳方式是什么(见上面的问题说明)?
  3. 使用哪种环境效率更高 - SQL Server,C#或组合?

2 个答案:

答案 0 :(得分:1)

  

是否有其他方法可以提高效率?

是,使用Linked Server存储过程为DB2实例创建sp_addlinkedserver,然后执行普通LEFT JOIN查询(或)WHERE NOT EXISTS以跳过现有行和然后相应地做INSERT

答案 1 :(得分:0)

选择'' as columnName ,,,来自db2。 并且您可以从db2获取相同的列。 然后使用" merge()"方法如下 dsSql.merge(DSDB2)。但在此之前 请确保dsSql和dsDB2之间的列类型必须相同。 如何同步列类型是你的任务〜:D

看起来比以前容易。

您的代码很好,我只是添加您的结果。 看看DataTble.BeginloadData() 我几天前从stackoverflow找到了它。它会为您的应用程序带来更多速度,遗憾的是我忘记了它的URL。

组合什么? 你的意思是, Java + Tomcat + Oracle C#+ IIS +(Oracle或Sql Server) 等等???