使用 tablediff 实用程序仅获取源和不匹配数据

Posted

技术标签:

【中文标题】使用 tablediff 实用程序仅获取源和不匹配数据【英文标题】:Getting Source only and mismatch data with tablediff utility 【发布时间】:2016-06-16 13:01:23 【问题描述】:

我正在使用 tablediff 实用程序将数据从 serval 数据库源传输到目标数据库,我得到的结果具有源数据库和目标数据库之间的所有差异,类似于这样

Dest. Only  N'1027' N'799'  N'91443'    N'1'    
Mismatch    N'103A' N'799'  N'13010'    N'1'    DATE_CURRENT DATE_OPERATION MATRICULE_UTILISATEUR QTE QTE_FINAL QTE_INIT QTE_OPERATION REFERENCE_DOCUMENT TYPE_DOCUMENT 
Src. Only   N'103A' N'310'  N'30129'    N'1'    

所以生成的sql文件包含deleteDest. Only行、updateMismatch行和insertSrc. Only

我的问题是:有没有办法使用tablediff 来获得只有MismatchSrc. Only 行的结果??

【问题讨论】:

您好,您还需要这方面的帮助吗? 【参考方案1】:

在您的tablediff 工具命令末尾添加以下内容

-dt -et DiffResults

它将删除一个名为DiffResults 的现有表,并在目标服务器和数据库中创建一个新表。 然后您可以查询DiffResults 表以获取所需的行。 在我的测试中,我运行以下命令

SELECT * FROM DiffResults
WHERE MSdifftool_ErrorDescription in ('Mismatch','Src. Only')

SELECT * FROM DiffResults
WHERE MSdifftool_ErrorCode in (0,2) -- 0 is for 'Mismatch';  1 is for 'Dest. Only' and 2 is for 'Src. Only'

更多细节可以在这里找到 - https://technet.microsoft.com/en-us/library/ms162843.aspx

【讨论】:

【参考方案2】:

如果你想使用命令行的结果,你可以用 findstr 管道输出:

tablediff <your parameters> | findstr /i "^Mismatch ^Src"

【讨论】:

以上是关于使用 tablediff 实用程序仅获取源和不匹配数据的主要内容,如果未能解决你的问题,请参考以下文章

Sqlserver tablediff的简单使用

Tkinter:获取数据集的单选按钮和查找数据集之间匹配和不匹配的函数

获取失败............哈希和不匹配

SQL:如何同时获取匹配和不匹配记录

如何编写oracle SQL查询以特定顺序获取匹配和不匹配的行对(基于键列)

linux实用技巧:在虚拟机vmware16软件上安装CentOs8.2虚拟机,重置可用源和安装输入法