拷贝表结构功能就是从不同的数据源之间拷贝表结构及数据。我们总共提供了两个窗口以实现这样的效果,一个是“复制表结构”窗口,另一个是“数据结构同步”窗口。
复制表结构:从下图的右键菜单1中可以打开“复制表结构”窗口,这个窗口可以实现简单的从无到有的新增式的复制表结构及数据的功能。具体操作方式见下图。
数据结构同步:这个窗体模块可以实现不同数据源之间,根据指定的同步模式,批量的同步表结构及数据。所有的拷贝动作都是以源数据表为基准,将目标数据表的结构、数据修改,以期与源数据表相同。所有操作默认源数据库与目标数据库中的表名称强一致。 如果是目标数据表不存在,则直接根据源数据表新增一个相同的表。如果目标数据表存在,则比较两个表中的各个字段。如果有相同字段名,则比较一下相应的字段类型、属性等。如果目标表中不存在的字段则添加。目标表比源数据表多出来的字段不作修改。数据同步分为删除目标表中的数据重新拷贝、仅新增(根据主键对比)
数据结构同步模式:
Update, 如果是目标数据表不存在,则直接根据源数据表新增一个相同的表。如果目标数据表存在,则比较两个表中的各个字段。如果有相同字段名,则比较一下相应的字段类型、属性等。如果目标表中不存在的字段则添加。目标表比源数据表多出来的字段不作修改。这种模式适合一些目标数据源中已经添加了部分自定义字段的场景。
Same,这种同步模式会让目标数据源中的表与源数据源中的表结构完全一致,多余的字段会被删除掉。这种比较适合软件版本升级、数据库同步的场景。
数据同步模式:
None,只同步结构不用同步数据。
Append,仅将源数据库中的数据添加到目标数据库中去,而不用管目标数据库中之前有没有数据,数据会不会重复。比较适合新增式的复制表场景。
Update,更新模式,即会将源数据库中的数据按照指定的主键同步更新到目标数据库中。通过比对指定的主键,目标数据库中存在的,则更新值,如果目标数据库中不存在的,则直接新增。而目标数据库中存在源数据库反而不存在的数据不作任何处理。这种适合编写代码同步部分数据表的场景(因为需要传入特定的主键参数)。
Same,最终结果是将目标数据库中的数据同步成与源数据库中的数据相同。操作方式为,先删除目标数据库中的所有表数据,然后重新将源数据库中的数据添加到目标数据库。这样做的目的是为了增加数据处理速度。因为一个一个地比对指定主键会相应的有点慢(关键是如果需要指定对比主键信息的话,就不方便实现自动化操作)。这种同步方式的弊端是如果表中存在自增长列的话,同步前后自增长列的数据会有变化。所以千万不能用自增长列作为数据关联列使用。反复频繁按此模式同步数据表的话,如果数据量比较大的情况下,有可能会超过自增长ID的最大值,而出现异常。
菜单功能介绍如下,注意:所有操作必须先选择好“源数据源”与“目标数据源”,设置好“数据结构同步模式”和“数据同步模式”。
选择所有相同表:在“源数据表清单”中,选择“源数据源”与“目标数据源”中都存在的表。
仅单表结构:根据指定的“数据结构同步模式”复制“源数据表清单”中选中的当前行中的表。仅仅复制表结构,不复制数据。
仅拷贝单表数据:根据指定的“数据同步模式”复制“源数据表清单”中选中的当前行中的表。仅仅复制表数据,不复制结构。
单表结构和数据:根据指定的“数据结构同步模式”和“数据同步模式”复制“源数据表清单”中选中的当前行中的表。既复制表数据,又复制表结构。
选择表结构:根据指定的“数据结构同步模式”复制“源数据表清单”中所有选中的行对应的表。仅仅复制表结构,不复制数据。
拷贝选择表数据:根据指定的“数据同步模式”复制“源数据表清单”中所有选中的行对应的表。仅仅复制表数据,不复制结构。
选择表结构和数据:根据指定的“数据结构同步模式”和“数据同步模式”复制“源数据表清单”中所有选中的行对应的表。既复制表数据,又复制表结构。
全库表结构:根据指定的“数据结构同步模式”复制“源数据源”中所有的表结构到“目标数据源”。仅仅复制表结构,不复制数据。
拷贝全库表数据:根据指定的“数据同步模式”复制“源数据源”中所有的表数据到“目标数据源”。仅仅复制表数据,不复制结构。
全库表结构和数据:根据指定的“数据结构同步模式”和“数据同步模式”复制“源数据源”中所有的表到“目标数据源”。既复制表数据,又复制表结构。