考虑下面的情况 两个表(A& B),在两个环境(DEV& TEST)中,在这些表中有记录 如果您查看表格的内容,您就会明白功能数据是相同的 我的意思是除了PK和FK值之外,Roger的名字与Fruit&蔬菜。
表A
1罗杰
2凯文
表B (斜体字段为表A的FK)
1 1 水果
2 1 蔬菜
3 2 肉
表A
4罗杰
5凯文
表B (斜体字段为表A的FK)
7 4 水果
8 4 蔬菜
9 5 肉
我正在寻找一个SQL数据比较工具,它会告诉我上述情况没有区别 或者,如果有,它将生成插入&使用正确的顺序更新脚本(先在A中插入,然后在B中插入)
答案 0 :(得分:1)
我在红门上找到了这个:http://www.red-gate.com/messageboard/viewtopic.php?t=8401#top
我联系了他们,他们告诉我这个功能将在下一版本的数据比较中实现。
答案 1 :(得分:1)
您也可以尝试使用Devart dbForge Data Compare。它允许您比较数据并设置所需操作的结果。看看它的性能和简洁性。
答案 2 :(得分:0)
答案 3 :(得分:0)
大多数数据比较工具允许您忽略列;但是,您希望它们不忽略FK列,但确定Test.TableA的4等于Dev.TableA的1,以便表B中的第一行相同。这是对的吗?
我不知道有任何工具可以做到这一点。现在针对您的第二个问题,大多数数据比较工具将以正确的顺序为您生成脚本。你可以看看Redgate的Data Compare。
如果你有Visual Studio Developer Edition,它附带了一个数据比较工具(可以单独安装,名为Visual Studio Database Edition)
答案 4 :(得分:0)
我有一个存储过程,可以比较任何两个表。事实证明,这也适用于视图。所以我可以比较两个视图,每个视图返回一个“扁平”版本的模式。我可以省略像身份/代理键这样的列,或者指示我的proc忽略它们。
就插入而言,我不确定。
答案 5 :(得分:0)
使用SqlDiffFramework查找任何差异很简单,{{3}}是数据源的可视化差异程序(而不是像典型的差异程序一样的文件)。顾名思义,它是一个框架:您必须为它提供两个要比较的查询,一个用于您的DEV环境,另一个用于您的TEST环境。在您的特定情况下,查询将是相同的,如:
SELECT A.person, B.foodgroup
FROM A JOIN B on A.IdPerson = B.IdPerson
ORDER BY A.person, B.foodgroup
SqlDiffFramework在一个窗口中提供了两个并排查询工具。您只需将一侧指向DEV数据库,将另一侧指向TEST数据库,然后运行两个查询以获取并比较数据。 (您甚至可以保存快照,然后在您选择的快照上运行差异,以查看随着时间的推移会出现的差异(如果有的话)。)
但请注意,SqlDiffFramework 不会对请求的第二部分进行处理,以生成脚本以使其匹配。
[SqlDiffFramework,版本1.0,介绍2010.04.29,是开源的,免费提供。]
答案 6 :(得分:0)
试试SQL Data Examiner。我喜欢这个工具。
答案 7 :(得分:0)
如果您使用的是sql server 2008,则可以使用合并语句,它将根据您的操作插入更新或删除。