使用 Navicat 进行结构对比和同步

John Doe 十二月 25, 2023

摘要:Navicat 能比较两个数据库和/或模式之间的对象,显示其结构的差异处,并且可以进行表结构和其他对象的同步。

关于结构同步

Navicat 让你以详细分析的进程比较和修改表的结构和其他对象。换句话说,Navicat 能比较两个数据库和/或模式之间的对象并显示其结构的差异处。若要打开结构同步窗口,请从菜单栏选择“工具”->“结构同步”。

你可以将设置保存为一个配置文件以供将来使用。若要打开一个已保存的配置文件,请点击“加载配置文件”按钮并从列表中选择。

提示:配置文件保存于配置文件位置

注意:仅适用于 MySQL、Oracle、PostgreSQL、SQL Server 和 MariaDB。Navicat Premium 和 Navicat for MySQL 均支持 MySQL 与 MariaDB 之间的同步。

选择连接和比较选项

选择源和目标连接

在结构同步窗口中,为“源数据库”和“目标数据库”定义连接、数据库和/或模式。你可以点击 互换 来交换源和目标的设置。

选择比较选项

然后,点击“选项”按钮来设置数据库或模式的比较选项。选项是根据连接的服务器类型而有所不同。

比较自动递增值

如果你想比较表的自动递增值,可勾选这个选项。

比较字符集

如果你想比较表的字符集,可勾选这个选项。

比较检查

如果你想比较检查,可勾选这个选项。

比较排序规则

如果你想比较表的排序规则,可勾选这个选项。

比较定义者

如果你想比较定义者,可勾选这个选项。

比较事件

如果你想比较事件,可勾选这个选项。

比较排除

如果你想比较表的排除,可勾选这个选项。

比较外键

如果你想比较表的外键,可勾选这个选项。

比较函数

如果你想比较函数,可勾选这个选项。

比较标识最后值

如果你想比较表的标识最后值,可勾选这个选项。

比较索引

如果你想比较索引,可勾选这个选项。

比较所有者

如果你想比较对象的所有者,可勾选这个选项。

比较分区

如果你想比较表分区,可勾选这个选项。

比较主键

如果你想比较表的主键,可勾选这个选项。

比较规则

如果你想比较规则,可勾选这个选项。

比较序列

如果你想比较序列,可勾选这个选项。

比较存储

如果你想比较表存储,可勾选这个选项。

比较表选项

如果你想比较其他表的选项,可勾选这个选项。

比较表

如果你想比较表,可勾选这个选项。

比较表空间及实体属性

如果你想比较表空间和实体属性,可勾选这个选项。

比较触发器

如果你想比较触发器,可勾选这个选项。

比较唯一键

如果你想比较表的唯一键,可勾选这个选项。

比较视图

如果你想比较视图,可勾选这个选项。

用级联删除

如果你想使用 CASCADE 选项删除从属的数据库对象,可勾选这个选项。

标识符区分大小写

映射标识符时忽略或考虑大小写,或使用服务器默认设置。

开始比较

点击“比较”按钮来比较源和目标数据库。

查看结构比较结果

比较结构后,树视图显示源和目标数据库和/或模式之间的不同之处。在默认情况下,树视图内的所有对象均已勾选。你可以取消勾选你不想应用于目标的对象。你可以展开表对象以查看详细的结构。

img

你可以选择 “按对象类型分组”或“按操作分组”来以对象类型或作業为树视图内的对象进行分组。

操作 描述
修改 对象存在于源和目标数据库或模式中,但具有不同的定义。目标对象将根据源对象进行修改。
创建 对象不存在于目标数据库或模式中。将在目标创建它。
删除 对象不存在于源数据库或模式中。目标对象将被删除。
没有操作 对象存在于源和目标数据库或模式中,并具有相同的定义。将不执行任何操作。

当你在树视图中选择一个对象时,“DDL 比较”选项卡会显示源和目标对象的 DDL 语句,而“部署脚本”选项卡则显示将在目标数据库运行的对象的详细 SQL 语句。

img

点击“下一步”按钮来显示所有已选对象的脚本。

编辑和运行已选择的脚本

你可以在“部署脚本”选项卡中查看将在目标数据库中运行的所有脚本。

部署选项按钮 描述
部署选项 遇到错误时继续 - 如有需要,在运行进程中忽略遇到的错误。
编辑脚本 打开“编辑部署脚本”窗口来重新排列脚本的排序。
复制脚本到剪贴板 将所有脚本从部署脚本选项卡复制到剪贴板。
在查询编辑器打开脚本 打开一个新的查询窗口并显示脚本。

在“编辑部署脚本”窗口中,使用箭头按钮移动脚本。

img

然后,点击“开始”按钮来运行脚本。窗口会显示运行进度、运行时间和成功或失败信息。