【问题标题】:Anyone know of a method / tool to compare ad hoc SQL queries?有人知道比较即席 SQL 查询的方法/工具吗?
【发布时间】:2010-10-21 12:15:51
【问题描述】:

我必须将大量遗留 SQL 查询转换为存储过程(重写和整理),并且我正在寻找一种有效的方法来逐一比较结果,以确保我没有修改行为。我目前使用 SQLDelta,但它需要我将每个查询的结果通过管道传输到表中,并使用 SSIS 将其中一个传输到单独的服务器。这是因为 SQL Delta 旨在比较数据库/表而不是数据集。它不会比较同一数据库中的表。

我真正想知道的是,有没有人有一种方法/工具可以以 SQLDelta 方式比较即席查询结果(即匹配 PK 上的匹配行、突出显示差异、间距结果以显示额外/缺失的行每组)。理想情况下,我会粘贴之前和之后的 SQL 并生成结果。结果集可以是 ~10 到 200k 行和 ~50 列。

不敢相信我无法通过谷歌找到类似的东西。任何帮助表示赞赏。

谢谢

【问题讨论】:

    标签: sql comparison diff adhoc-queries


    【解决方案1】:

    一种技术含量较低的方法是将每个结果输出到一个文件中(SQL 管理器有一个“结果到文件”按钮)并使用像 tortoise merge 这样的差异工具。

    编辑


    如果您从未从 sql Manager 中提取结果作为文本,它会以表格格式显示。

    PrimaryLocation_FacilityLongName                                                                     SecondaryLocation_FacilityLongName                                                                   HasPublicComment HasPublicAttachment CMRID                                CustomerIDNumber
    ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- ---------------- ------------------- ------------------------------------ ------------------------------
    BCCH-Ambulatory Care Center                                                                          NULL                                                                                                 NULL             NULL                95FA6986-DB86-4E6F-8C48-05948AA94A30 1145
    BCCH-Ambulatory Care Center                                                                          NULL                                                                                                 NULL             NULL                0E40FF65-804E-47F7-9BCC-112185196162 1146
    BCCH-Ambulatory Care Center                                                                          NULL                                                                                                 NULL             NULL                908C5ADB-333C-42D0-9CDD-2FF196696B00 103
    BCCH-Ambulatory Care Center                                                                          NULL                                                                                                 NULL             NULL                BA8239B2-BF53-451F-A6B2-44432D8B7BC7 1241
    BCCH-Ambulatory Care Center                                                                          NULL                                                                                                 0                NULL                3B873A2C-4E1C-4E26-A3F7-6FDB0EE61EF2 1244
    BCCH-Ambulatory Care Center                                                                          NULL                                                                                                 NULL             NULL                417242E8-E656-4AA3-A4B7-989E5740C84B 1239
    

    只要查询是有序的。您所要做的就是打开 Tortoise 合并并在文件中查找红点。如果没有,你可以去。

    【讨论】:

    • 谢谢,但仅仅因为它们的剪切大小,没有以网格方式排列比较是痛苦的工作
    • 这就是为什么我会使用乌龟合并。它将准确突出显示两个查询之间哪些行和列不同。
    • 或者您可以使用 ms word 或任何其他文本比较工具
    • @Beth 我不知道 MSWord 有比较工具,但任何差异工具都可以工作。
    • mmm.. 我尝试了一些不同的差异工具。由于工作限制,不能使用/获取乌龟。作为工作的一部分,列的数据类型正在发生变化。 SQL 结果到文本似乎使用最大可能的列宽打印结果,这搞砸了差异工具。我最终得到了无休止的空白“变化”。将 SQL 结果调整为文本的任何想法?还是可以应付的diff工具?
    猜你喜欢
    • 2010-12-29
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多