> SQL脚本说明: > * 0开头:脚本为数据修复类SQL。 > * 1开头:脚本中间表。有data_migration_log(迁移日志表)、data_migration_offset(迁移偏移量表) > * 3开头:脚本为迁移表对应的存储过程。 > * 4开头:脚本为迁移执行脚本。主要数据迁移的脚本都在脚本中。 > * 6开头:脚本为清除本次迁移的数据脚本。 ## 迁移方式 1. 创建中间库,如:trs_data_migration_city*(用于迁移wcm数据;*表示节点ID)和 trs_data_migration_mas(用于迁移MAS数据); * 将WCM中的以下表迁移到trs_data_migration_city* * 所有元数据表(wcmmetatable...) * wcmappendix * wcmchannel * wcmchannelchildindexquote * wcmchannelsyn * wcmchnldoc * wcmdocument * wcmfolderpublishconfig * wcmtemplate * wcmtemplateargument * wcmtemplateemploy * wcmtemplatenest * wcmtemplatequote * wcmwebsite * xwcmclassinfo * xwcmclassinfoview * xwcmdbfieldinfo * xwcmmaterial * xwcmmetaviewemployer * xwcmmetaviewfieldgroup * xwcmtableinfo * xwcmviewfieldinfo * xwcmviewinfo * 将mas表的数据迁移到trs_data_migration_mas * mas_publishedvideo * mas_videostream * mas_masid * mas_masvideo 2. 处理中间库的脏数据和加载SQL脚本。 * 中间库trs_data_migration_city*,在Navicat中,中间库运行0-3开头的所有SQL存储过程。如果该节点第一次运行使用全量下的迁移SQL; 在trs_data_migration_mas运行3_sp_data_migration_mas*.sql; * 清理脏数据脚本。 ```sql #删除有问题的素材库数据 DELETE FROM xwcmmaterial WHERE MATERIALTYPE = 1 and FILENAME is NULL; DELETE FROM xwcmmaterial WHERE MATERIALTYPE = 2 and MASID is NULL; #查询表中是否存在唯一建重复 SELECT DOCID,CHNLID FROM wcmchnldoc GROUP BY DOCID,CHNLID HAVING COUNT(1) > 1; create table t_chnldoc as SELECT MAX(RECID) as 'RECID',DOCID,CHNLID,count(1) datacount FROM wcmchnldoc GROUP BY DOCID,CHNLID HAVING COUNT(1) > 1 ; DELETE FROM wcmchnldoc WHERE recid IN(SELECT recid FROM t_chnldoc); ``` * 添加素材库的索引。 ```sql ALTER TABLE `xwcmmaterial` ADD PRIMARY KEY (`MATERIALID`); ALTER TABLE `xwcmmaterialquote` ADD INDEX (`MATERIALID`) USING BTREE , ADD INDEX (`DOCID`) USING BTREE ; ``` 3. 迁移站点,栏目,视图,模板等基本数据。(用户可以在新系统中增加角色,调整视图和模板) * 中间库trs_data_migration_city*,处理数据中视图字段,使字段字段对应; ```sql # 相关视频 FieldType 由 51 变为 20 update XWCMDBFieldInfo set FieldType=20 where FieldType=51; update XWCMViewFieldInfo set FieldType=20 where FieldType=51; # 相关图片 FieldType 由 50 变为 32 update XWCMDBFieldInfo set FieldType=32 where FieldType=50; update XWCMViewFieldInfo set FieldType=32 where FieldType=50; # 相关文档 FieldType 由 57 变为 31 update XWCMDBFieldInfo set FieldType=31 where FieldType=57; update XWCMViewFieldInfo set FieldType=31 where FieldType=57; # mw_文本框 FieldType 由 53 变为 3 update XWCMDBFieldInfo set FieldType=3 where FieldType in (53,65); update XWCMViewFieldInfo set FieldType=3 where FieldType in (53,65); # mw_是否按钮 FieldType 由 54 变为 5 update XWCMDBFieldInfo set FieldType=5 where FieldType=54; update XWCMViewFieldInfo set FieldType=5 where FieldType=54; # mw_时间按钮FieldType 由 55 变为 11 update XWCMDBFieldInfo set FieldType=11 where FieldType=55; update XWCMViewFieldInfo set FieldType=11 where FieldType=55; # mw_复杂编辑器 FieldType 由 63 变为 12 update XWCMDBFieldInfo set FieldType=12 where FieldType=63; update XWCMViewFieldInfo set FieldType=12 where FieldType=63; ``` * 中间库trs_data_migration_city*,迁移站点,栏目,视图到trs_hycloud_iip; ```sql call sp_city_base(节点ID); ``` * 中间库trs_data_migration_city*,处理元数据表信息;需要先对迁移元数据表进行整理,将需要迁移的元数据表拷贝到中间库; * 执行存储过程update_data_dbfield.sql和update_data_table.sql,。中间库,删除多余字段元数据,添加默认的元数据字段 ```sql # 注意该脚本结果为sql 脚本。需要复制脚本再执行一遍。 call update_data_table('_city4',迁移起始tabelinfoID); ``` * 中间库trs_data_migration_city*,中间库修改元数据表名; ```sql #获取修改元数据的表名的SQL;拷贝以下SQL生成的结果,运行生成的SQL。 SELECT CONCAT( 'ALTER TABLE ', table_name, ' RENAME TO ', table_name, '_city4', ';' ) sqls FROM information_schema.TABLES WHERE table_schema = '中间库的数据库名称,比如:trs_data_migration_city4' AND table_name LIKE 'wcmmetatable%'; ``` * 中间库trs_data_migration_city*,生成创建表sql以保存元数据表索引;拷贝以下SQL生成的结果,运行生成的SQL。 ```sql SELECT concat('create table trs_hycloud_iip.wcmmetatable',TABLENAME,'_city5 like ','wcmmetatable',TABLENAME,'_city5;') from xwcmtableinfo; ``` 4. 迁移数据 和 附件。 * 中间库trs_data_migration_city*,将wcmdocuemnt,wcmchnldoc 元数据表中的数据拷贝到trs_hycloud_iip;拷贝以下SQL生成的结果,运行生成的SQL。 ```sql #生成插入数据sql SELECT concat('INSERT INTO trs_hycloud_iip.wcmmetatable',TABLENAME,'_city5 SELECT * from ','wcmmetatable',TABLENAME,'_city5;') from xwcmtableinfo; ``` * 中间库trs_data_migration_city*,执行迁移脚本 ```sql #注意检查其中sp_data_migration_wcmmetatable 存储过程是否执行成功。查看结果是否存在 "sp_data_migration_wcmmetatable 执行完成" call sp_city_data(节点ID) ``` * 中间库 trs_data_migration_mas,迁移mas数据 **注意必须要对迁移数据表建主键索引** ```sql #mas数据迁移 call sp_city_mas(); ``` * 中间库trs_data_migration_city*,迁移附件 **注意必须要对迁移数据表建主键索引** ```sql #迁移附件 call sp_city_appendix(节点ID, masID的偏移量); ``` * 中间库trs_data_migration_city*,修改元数据中相关图片,相关视频字段不对 ```sql #注意检查其中update_data_relation_appendix_2 存储过程是否执行成功。查看结果是否存在 "update_data_relation_appendix_2 执行完成" call update_data_relation_appendix(节点ID, masurl前缀, 起始tabelID,起始docId); ``` 5. 其他工具 * 自动生成索引 ![索引相关规则](./img/IdxId.png) * 修改表名 ```sql #生成SQL,用与修改元数据,视图,字段名称符合自动生成索引的标准。 update_data_idxid(视图ID); ```