发明名称 一种织造车间生产数据的迁移方法
摘要 本发明涉及一种织造车间生产数据的迁移方法,该迁移方法包括中心数据库、中心数据表结构、分厂数据库和分厂数据表结构,并采用以下步骤:(1)系统初始化,(2)数据连接配置,提供对数据连接的编辑功能,(3)数据同步,完成生产数据从分厂数据库向中心数据库的迁移;(4)数据恢复,当某个分厂由于意外导致数据库系统崩溃无法正常运转的时候,利用分厂标识从中心数据库提取出相应分厂的生产数据,恢复到该分厂的数据库中,保证分厂数据的完整性。本发明迁移方法具有可配置、易于扩展、支持断点续传、增量迁移、周期性迁移以及支持不同数据库间数据传输等特点。
申请公布号 CN101706803B 申请公布日期 2012.07.04
申请号 CN200910228796.5 申请日期 2009.11.27
申请人 天津工业大学 发明人 刘文菊;王赜;王云龙;时珍全;王婉茹;孙杰;张牧
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 天津翰林知识产权代理事务所(普通合伙) 12210 代理人 张国荣
主权项 1.一种织造车间生产数据的迁移方法,该迁移方法采用以下步骤:(1)系统初始化,在系统启动后,建立一个唯一的系统配置实例,读取系统配置文件,将其中的配置信息赋值给该实例相应的属性中,完成系统参数的初始化;(2)数据连接配置,提供对数据连接的编辑功能,通过选择相应的数据连接,进入编辑阶段,接受用户编辑;编辑提交后,对编辑的数据进行校验,检查数据的合法性,测试数据连接的可靠性以及配置的数据连接是否符合中心数据表结构以及分厂数据表结构的要求;校验成功后更新当前系统配置参数,包括更新系统配置实例和更新配置文件;(3)数据同步,完成生产数据从分厂数据库向中心数据库的迁移;(4)数据恢复,当某个分厂由于意外导致数据库系统崩溃无法正常运转的时候,利用分厂标识从中心数据库提取出相应分厂的生产数据,恢复到该分厂的数据库中,保证分厂数据的完整性;其中,所述步骤(3)数据同步包括:(31)同步初始化,从系统配置实例中获取数据连接信息,建立分厂对应表和中心对应表的连接,在分厂端创建操作记录表,在分厂对应表上创建操作记录触发器,记录分厂对应表上的数据操作;同步初始化阶段要创建操作记录表和操作记录触发器:操作记录表用于存储分厂数据表上的操作变化,其数据由操作记录触发器提供,操作记录表的各字段详细说明如下:字段id:主键,自增字段,标识操作记录的编号;字段optype:该字段有三种取值:0:代表delete操作;1:代表update操作;2:代表insert操作;字段statement:用于存储由操作记录触发器记录下的数据操作语句;数据操作被操作记录触发器记录下来,并以尚未书写完整、不能在数据库中执行的SQL语句形式写入到该字段中;操作记录表是在同步初始化过程中由程序自动创建的,根据数据库类型的不同,采用不同的数据库语句进行创建,操作记录表创建流程如下:<img file="FSB00000641379900011.GIF" wi="76" he="82" />读取数据连接信息;<img file="FSB00000641379900012.GIF" wi="72" he="83" />获取同步源数据表表名和源数据库的类型;<img file="FSB00000641379900021.GIF" wi="65" he="83" />获取与同步源数据表的连接;<img file="FSB00000641379900022.GIF" wi="86" he="86" />语句类型适配选择;<img file="FSB00000641379900023.GIF" wi="84" he="70" />SQL语句与同步源数据表名拼接;<img file="FSB00000641379900024.GIF" wi="82" he="94" />在源数据库执行SQL语句创建记录表;操作记录触发器用于自动记录对分厂数据表的操作;创建操作记录触发器时要查询得到分厂数据表的字段信息,将该分厂数据表中可写入字段的字段名称和类型提取后,拼接到创建操作记录触发器的SQL语句中,操作记录触发器创建流程如下:<img file="FSB00000641379900025.GIF" wi="83" he="89" />读取数据连接信息;<img file="FSB00000641379900026.GIF" wi="86" he="87" />获取与同步源数据表的连接;<img file="FSB00000641379900027.GIF" wi="72" he="69" />获取同步源数据表的字段信息;<img file="FSB00000641379900028.GIF" wi="75" he="72" />数据库类型匹配;<img file="FSB00000641379900029.GIF" wi="80" he="85" />update/delete/insert操作记录触发器语句拼接;<img file="FSB000006413799000210.GIF" wi="73" he="73" />在同步目的数据库执行拼接语句;<img file="FSB000006413799000211.GIF" wi="73" he="82" />操作记录触发器建立成功提示;由操作记录触发器创建出的记录格式为:A.删除操作记录:“delete from同步目的表名where主键名=主键值[and主键名2=主键值2…]”,其中主键的个数因表而异;B.更新操作记录:“update主表名set字段名=字段值where主键名=主键值[and主键名2=主键值2…]”,更新的字段个数因操作而异;C.插入操作记录:“字段值[,字段值2…]”,个数为该表的字段数;操作记录触发器创建过程中第<img file="FSB000006413799000212.GIF" wi="63" he="77" />步的语句拼接过程如下:<img file="FSB000006413799000213.GIF" wi="77" he="74" />选择适配规则;<img file="FSB000006413799000214.GIF" wi="74" he="71" />与同步源数据表表名进行拼接;<img file="FSB000006413799000215.GIF" wi="67" he="68" />获取下一字段信息;<img file="FSB000006413799000216.GIF" wi="69" he="82" />判断当前字段是否为可写入字段,是则执行<img file="FSB000006413799000217.GIF" wi="83" he="75" />否则执行<img file="FSB000006413799000218.GIF" wi="112" he="86" /><img file="FSB000006413799000219.GIF" wi="64" he="68" />将SQL语句与当前字段拼接;<img file="FSB000006413799000220.GIF" wi="62" he="75" />判断是否有下一字段,是则执行<img file="FSB000006413799000221.GIF" wi="89" he="70" />否则执行<img file="FSB000006413799000222.GIF" wi="97" he="87" /><img file="FSB000006413799000223.GIF" wi="59" he="59" />与操作记录表名拼接;在整个循环过程中,自增字段和计算列字段这两个无用的字段被自动丢弃,剩余的字段均是承载有效生产数据的字段;(32)周期同步,定时从所述操作记录表中获取由所述操作记录触发器记录下的数据操作信息,结合操作类型、附加字段将该操作信息拼接成SQL语句,在中心数据表上执行所述SQL语句,实现将数据变化反应到中心数据表上,完成数据的同步;周期同步阶段的流程具体说明如下:<img file="FSB00000641379900031.GIF" wi="73" he="63" />启动一个同步线程,该线程以数据连接号作为标记;<img file="FSB00000641379900032.GIF" wi="86" he="84" />调用触发器状态管理模块,将同步源数据表的update、delete和insert三个操作记录触发器全部启用;<img file="FSB00000641379900033.GIF" wi="90" he="76" />获取分厂数据表对应的操作记录表中的所有记录,指针指向第一条记录;如无记录,则转<img file="FSB00000641379900034.GIF" wi="81" he="66" /><img file="FSB00000641379900035.GIF" wi="76" he="76" />根据数据连接两端的数据库类型,调用用于数据格式转换的函数对记录中的value值部分进行格式转换,使新的格式适合于目的数据库;形式为convertData(源数据库类型,目的数据库类型,原始字符串),返回值为经过格式转换的目的字符串;<img file="FSB00000641379900036.GIF" wi="83" he="75" />根据optype字段判断操作类型,如果是删除和更新操作则直接与附加字段部分进行拼接即可;如果是插入操作,查询分厂表的可写入字段,用这些字段与statement中的字符串进行拼接,而后再进行附加字段处理;最后插入语句要拼接成如下格式:“insert into目的表表名(可写入字段[,附加字段…])values(statement字符串[,附加字段值…])”;<img file="FSB00000641379900037.GIF" wi="77" he="75" />取得中心数据库的连接,在该连接上执行上述拼凑的SQL语句;<img file="FSB00000641379900038.GIF" wi="65" he="82" />执行成功,则删除记录表中对应的记录,并在对应类型的同步操作计数器上加一;<img file="FSB00000641379900039.GIF" wi="78" he="84" />如果执行失败,则对产生的异常做捕获处理,进行日志记录;如果是特殊的异常,任务无法继续进行,转<img file="DEST_PATH_RE-FSB000007241497000110.GIF" wi="82" he="60" />如果是一般异常,则指针指向下一条记录,转<img file="FSB000006413799000310.GIF" wi="86" he="60" /><img file="FSB000006413799000311.GIF" wi="71" he="76" />一次同步执行结束,日志记录成功进行同步的各个同步操作计数器的值,而后将计数器清零,线程休眠一段时间,等待进行下一次同步,返回<img file="FSB000006413799000312.GIF" wi="82" he="60" /><img file="FSB000006413799000313.GIF" wi="71" he="71" />同步线程终止,同步任务结束;所述步骤(4)数据恢复包括:(41)利用分厂的部分数据表结构的字段信息并结合分厂标识在中心数据表上建立一个恢复视图;所述恢复视图提供恢复用的全部数据信息;(42)恢复线程从所述恢复视图中提取一条数据,拼接成插入语句;在分厂数据表上执行所述插入语句,完成数据的恢复;(43)移到下一条数据,重复步骤(42),直到全部数据恢复完成。
地址 300160 天津市河东区成林道63号