环境: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
问题:
tblB
的记录添加到tblA
的最佳方式是什么(见上面的问题说明)?答案 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) 等等???