SQL Delta for MySQL是一款数据库对比工具,主要用于比较SQL数据库的结构和数据差异,并生成同步脚本。软件可检查表结构、存储过程、函数、视图等数据库对象。软件支持数据库模式和表数据对比,可将一个数据库的结构或数据同步到另一个数据库,采用选项卡式界面,可同时处理多个比较项目,适合数据库开发、维护和测试场景使用。对于需要维护多个数据库环境的用户来说,SQL Delta for MySQL能够减少手动比对和同步操作。

软件核心功能

一、项目管理器

1、多标签页项目

可在独立标签页中并排运行两个及以上项目:既可以是两台完全不同服务器上的两个架构对比项目,也可以是同一台服务器下分别执行架构对比与数据对比的项目。

所有对比进程均在独立线程中运行,因此你可以在等待其他对比任务执行完毕的同时,查看内容甚至直接执行更新脚本。

2、项目分组

你可以将各个项目归入不同项目组,让项目管理更加条理清晰。例如把所有数据对比项目归集到数据分组,或将同一服务器下的所有项目统一归入一个服务器分组。

二、架构比较

1、直接比较

比较两个数据库既快速又简单。在一个新项目中,选择您的源数据库,然后选择目标数据库,点击运行架构比较。

SQL Delta显示了源端或目标端中所有不同或不存在的对象概览。通过选择每个对象,您可以在架构级别查看各种差异。

2、综合项目选项

每个模式比较项目都有一系列选项,用于减少发现的常见差异。例如,源和目标之间的对象约束与系统名称通常不同,这些差异可以被忽略。

3、模式映射

对于某些项目,您的目标模式名称(所有者)与源模式名称不同。每个比较项目都提供将源模式名称映射到目标模式名称的选项。

SQL Delta随后可以根据需要自动更改定义,以使用正确的模式名称。例如,您的源数据库使用 "dbo" 作为所有对象的模式名称,而目标数据库使用 "prod"。只需将 dbo 映射到 prod,任何脚本更改都将确保目标对象是 prod.object 而不是 dbo.object。

4、全面搜索与筛选

在比较结果中,可以根据一系列选项对对象进行过滤。例如,“隐藏所有相同对象”是一个常用的过滤器。

过滤器可以被持久化保存,因此每当你重新运行项目时,过滤器都会重新应用。这种持久化功能还可以用于预选或预取消选择对象,如果你源数据库中的某些对象不应发送到目标数据库,这会非常方便。

5、过滤器模式读档

你可以将过滤器应用于模式读档,以排除某些对象。例如,你可能有一组源数据库中的函数,它们永远不会出现在目标数据库中。通过添加读档过滤器,你可以将这些函数排除在读档之外,从而在比较中也将其排除。

6、两键同步

一旦显示架构比较选项卡,只需点击“脚本”生成部署脚本,然后点击“执行”将其应用到目标。

7、比较报告

SQL Delta 可以生成模式比较的 HTML 报告,突出显示整个模式中的对象差异。

8、部署前修改脚本

有时能够修改脚本或向最终部署脚本添加脚本是非常方便的。同步脚本是完全可编辑的,此外,您还可以在项目选项中添加自定义脚本,这些脚本会被添加到每次部署的同步脚本中。

三、数据比较

1、它是如何工作的

数据比较使用一个或多个索引列(通常是主键)来确定源表中的行是否与目标表中的行匹配。如果找到匹配项,数据比较将扫描每个列以查找差异。

2、全面配置

默认情况下,数据比较非常简单,只需选择源数据库和目标数据库并运行比较即可。SQL Delta 会自动确定具有主键和匹配列名的表,并执行比较。

如果您希望获得更细致的控制,可以选择要比较的表,定义自己的索引列,甚至定义要比较的列。

3、表和列映射

有时源数据库中的表与目标数据库中的表名称不同。数据比较可以将源表名映射到目标表名。列也是如此,源列可以映射到目标列。数据比较会在部署脚本中处理这些名称更改。

4、数据过滤

在读档期间,可以对表数据进行过滤以排除特定行,且过滤器使用标准的where子句格式。

5、列转换

可以配置列以应用转换,用于比较或同时用于比较和脚本。

例如,您可能想要比较一个存储两位小数的数值列(货币值),但在这种情况下,只有整数对您有意义。

您可以对该列应用round(..)转换,这将移除小数部分并比较整数。

6、数据对比视图

视图可以作为数据比较的一部分可选包含。源视图可用于映射到目标表,从而提供一种从视图填充目标表的方法。

7、导出数据比较脚本

数据比较脚本可能非常庞大,在脚本执行过程中会自动保存到文件中。

数据比较脚本显示功能可展示数百万行代码,因此您甚至可以查看最大的部署脚本。

8、差异报告

生成一份HTML报告,显示您数据对比的差异摘要。

四、架构浏览

1、查看您的数据库

架构视图是一个编辑器功能,可显示数据库的整个架构。对于表和视图等对象,您还可以查看表或视图中的数据。

2、搜索

想在数据库中查找内容?架构视图可以筛选到对象的定义级别,以便您快速定位数据库中的元素。

3、动态查询

对您的数据库运行 DML 或 DDL 查询。

4、审查

例如,或许模式比较显示源表发生了意外更改,而您希望查看与源数据库和目标数据库相关的数据及其他信息。

从项目管理器中复制您的比较项目,将其切换为架构视图项目并运行。现在您可以看到原始架构以及表和视图中的数据。或许数据能解释变更,或者表中的注释能提供更多信息。

五、自动化任务

1、完成时事件

每个项目都可以有一系列在项目运行后触发的事件。

2、可用事件

1)显示同步脚本

2)存档同步脚本

3)执行同步脚本

4)生成对比报告

5)电子邮件

6)对比后运行项目

7)脚本后运行项目

8)将源/目标存档为快照

9)执行脚本

结合命令行功能,允许 SQL Delta 以完全自动化的模式运行。

六、差异报表

1、架构比较报告

在架构比较中,有4份比较报告和2份架构报告可用。每份报告都以HTML文件形式创建。前四份报告为架构比较提供了不同详细程度的信息。源/目标架构报告会生成一个HTML文件,显示整个数据库的架构详细信息。

2、数据比较报告

生成一个摘要HTML文件,以显示数据比较项目的差异。

3、架构视图报告

生成一个树视图HTML文件,以显示数据库架构,或生成所选对象的HTML视图。

软件特色

1、支持MySQL数据库架构结构对比与表内实际数据内容对比,覆盖绝大多数数据库变更场景。

2、可离线比对历史版本,减少直接连接生产数据库的安全风险。

3、自带自动化任务配置与命令行调用能力,可嵌入CI/CD流水线实现数据库版本自动校验同步。

4、界面轻量化,占用资源低,上手门槛低,不用复杂配置即可快速完成两库比对。

更新日志

v7.3.4.10版本

1、在项目管理器过滤功能中新增 /sc 和 /dc 开关,用于查找架构比较(Schema Compare)或数据比较(Data Compare)项目。

2、在项目管理器中新增 /r 快速正则表达式搜索开关。

3、使用 /r 进行多词正则表达式搜索时,现在可以匹配被其他文本分隔开的关键词。

4、修复数据同步脚本中错误的本地化问题。

5、进一步改进架构比较脚本的排序逻辑。

6、改进 Windows 非主题模式下自动切换主题时的颜色显示效果。

7、即使项目组之前已折叠,搜索结果仍会保持显示。

8、改进对空的或不可用的 OneDrive 项目/XML 文件的处理方式。

9、修复解析脚本文件时可能导致程序崩溃的严重问题。

10、改进循环依赖处理,包括以下复杂情况:

1)表包含计算列(Computed Columns);

2)计算列引用函数;

3)而这些函数又反过来引用该表。

11、修复某些被引用对象可能在依赖它们的对象之后才生成脚本的问题。

12、改进大型数据比较脚本在“完成时(On Completion)”保存时的处理性能。

13、防止在已有 Schema View 查询正在运行时启动第二个查询。

14、修复结果网格(Result Grid)在以下情况下出现错误的问题:

1)查询没有返回结果集;

2)查询仅包含 DDL 语句;

3)查询执行失败。

15、SQL 编辑器的行号区域(Gutter)现在会根据更大的行号自动扩展。

16、改进 UTF-8、UTF-16 以及无 BOM 的文本文件加载支持。

17、改进系统首选项(System Preferences)中的键盘导航体验。

18、为“显示(Display)”“颜色(Colors)”以及其他首选项区域增加独立的键盘快捷键。

19、当Windows Server上配置的主题无法应用时,新增使用原生 Windows 样式作为备用方案。

20、修复其他常规错误。