浏览代码

优化迁移sql:
1.添加清除冗余数据sql:0_delete_redundance_data.sql;
2.添加记录读取偏移量的表及存储过程:1_data_migration_offset.sql
3.修改主迁移过程为获取生成的偏移量。

xxy 6 年之前
父节点
当前提交
a993f56f85

+ 49 - 0
TRS.WCM.Developer/贵州项目/0_delete_redundance_data.sql

@@ -0,0 +1,49 @@
+#迁移前先清除冗余数据
+#需求场景:按站点迁移一个节点,须保留的站点id人工整理
+
+DELETE from wcmwebsite where siteid not in (124,120,66,108,35,52,101,91,76,88,184,195,188,177,194,193,187,190,183,186,191,189,175,176,180,179,174,169,130,166,165,164,199,198,197,173,182,155,171,196);
+-- 删除多余栏目
+DELETE from wcmchannel where siteId not in (SELECT siteId from wcmwebsite) or status < 0;
+-- 栏目模板触发发布关联关系
+DELETE from wcmchannelchildindexquote where FOLDERID not in (SELECT siteId from wcmwebsite) and FOLDERTYPE = 103;
+DELETE from wcmchannelchildindexquote where FOLDERID not in (SELECT channelId from wcmchannel) and FOLDERTYPE = 101;
+-- 栏目模板触发发布关联关系(似乎多余)
+DELETE from wcmchannelchildindexquote where TEMPLATEID not in (SELECT TEMPID from wcmtemplate);
+-- 文档分发关系
+DELETE from wcmchannelsyn where srcchannel not in (SELECT channelId from wcmchannel);
+DELETE from wcmchannelsyn where tochannel not in (SELECT channelId from wcmchannel);
+-- 存放路径
+DELETE from wcmfolderpublishconfig where FOLDERID not in (SELECT channelId from wcmchannel) and FOLDERTYPE = 101;
+DELETE from wcmfolderpublishconfig where FOLDERID not in (SELECT siteId from wcmwebsite) and FOLDERTYPE = 103;
+-- 多余模板
+DELETE from wcmtemplate where rootid not in (SELECT siteId from wcmwebsite);
+-- 模板变量
+DELETE from wcmtemplateargument where TEMPLATEID not in (SELECT TEMPID from wcmtemplate);
+-- 模板栏目绑定关系
+DELETE from wcmtemplateemploy where EMPLOYERID not in (SELECT CHANNELID from wcmchannel) and EMPLOYERTYPE = 101;
+DELETE from wcmtemplateemploy where EMPLOYERID not in (SELECT siteId from wcmwebsite) and EMPLOYERTYPE = 103;
+DELETE from wcmtemplateemploy where TEMPLATEID not in (SELECT TEMPID from wcmtemplate);
+-- 嵌套模板信息
+DELETE from wcmtemplatenest where templateId not in (SELECT TEMPID from wcmtemplate);
+DELETE from wcmtemplatenest where nestedtemplateId not in (SELECT TEMPID from wcmtemplate);
+-- 模板引用信息
+DELETE from wcmtemplatequote where templateId not in (SELECT TEMPID from wcmtemplate);
+DELETE from wcmtemplatequote where quotedFolderId not in (SELECT CHANNELID from wcmchannel) and quotedFolderType = 101;
+DELETE from wcmtemplatequote where quotedFolderId not in (SELECT siteId from wcmwebsite) and quotedFolderType = 103;
+-- 栏目绑定的视图
+DELETE from xwcmmetaviewemployer where CHANNELID not in (SELECT CHANNELID from wcmchannel);
+-- 视图信息
+DELETE from xwcmviewinfo where VIEWINFOID not in (SELECT VIEWID from xwcmmetaviewemployer);
+-- 视图字段信息
+DELETE from xwcmviewfieldinfo where VIEWID not in (SELECT viewinfoid from xwcmviewinfo);
+DELETE from xwcmmetaviewfieldgroup where metaviewid not in (SELECT viewinfoid from xwcmviewinfo);
+-- 元数据表信息
+DELETE from xwcmtableinfo where TABLEINFOID not in (SELECT MAINTABLEID from xwcmviewinfo);
+DELETE from xwcmdbfieldinfo where TABLEID not in (SELECT TABLEINFOID from xwcmtableinfo);
+
+-- --------数据记录
+-- chnldoc记录
+DELETE from wcmchnldoc where CHNLID not in (SELECT CHANNELID from wcmchannel);
+-- document
+DELETE from wcmdocument where docchannel not in (SELECT CHANNELID from wcmchannel);
+-- metatable如何清理?

+ 15 - 0
TRS.WCM.Developer/贵州项目/1_data_migration_offset.sql

@@ -0,0 +1,15 @@
+CREATE TABLE `data_migration_offset` (
+  `tableName` varchar(50) NOT NULL DEFAULT '',
+  `offset` int(11) DEFAULT NULL,
+  PRIMARY KEY (`tableName`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+DROP PROCEDURE IF EXISTS setOffset;
+DELIMITER $$
+CREATE PROCEDURE setOffset(t_name varchar(50),_offset int(11))
+BEGIN
+	set @x = IFNULL((select offset from data_migration_offset where tableName = t_name),0);
+	IF @x = 0 THEN
+    INSERT into data_migration_offset values(t_name ,_offset);
+	END IF;
+END $$

+ 44 - 28
TRS.WCM.Developer/贵州项目/4_sp_city_n.sql

@@ -36,34 +36,50 @@ CREATE PROCEDURE sp_city_n(IN n INT)
 
 
 
-    # xx ID 偏移量,为了和海云系统中的 xx ID 错开一段距离
-    SET @siteIdOffset = 100000 * @n;
-    SET @viewIdOffset = 100000 * @n;
-    SET @tableInfoIdOffset = 100000 * @n;
-    SET @metaViewFieldGroupIdOffset = 100000 * @n;
-
-    SET @classInfoViewIdOffset = 100000 * @n;
-    SET @classInfoIdOffset = 100000 * @n;
-    SET @fieldIdOffset = 1000000 * @n;
-    SET @metaViewEmployerIdOffset = 100000 * @n;
-    SET @viewFieldInfoIdOffset = 100000 * @n;
-    SET @dbFieldIdOffset = 100000 * @n;
-
-    SET @channelIdOffset = 1000000 * @n;
-    SET @channelSynIdOffset = 1000000 * @n;
-    SET @templateIdOffset = 1000000 * @n;
-    SET @folderPublishConfigIdOffset = 1000000 * @n;
-    SET @templateArgIdOffset = 1000000 * @n;
-    SET @templateEmployIdOffset = 1000000 * @n;
-    SET @templateNestIdOffset = 1000000 * @n;
-    SET @templateQuoteIdOffset = 1000000 * @n;
-
-    SET @appendixIdOffset = 10000000 * @n;
-    SET @recIdOffset = 10000000 * @n;
-    SET @docIdOffset = 10000000 * @n;
-
-
 
+    # xx ID 偏移量,获取海云系统中的对应 xx maxID 错开一段距离,改为存入最大id
+	SET @siteIdOffset= IFNULL((SELECT MAX(siteId) from trs_hycloud_iip.wcmwebsite),0);
+	CALL setOffset('wcmwebsite',@siteIdOffset);
+	SET @chnlIdOffset= IFNULL((SELECT MAX(channelId) from trs_hycloud_iip.wcmchannel),0);
+	CALL setOffset('wcmchannel',@chnlIdOffset);
+	SET @appendixIdOffset= IFNULL((SELECT MAX(appendixId) from trs_hycloud_iip.wcmappendix),0);
+	CALL setOffset('wcmappendix',@appendixIdOffset);
+	SET @recIdOffset= IFNULL((SELECT MAX(recId) from trs_hycloud_iip.wcmchnldoc),0);
+	CALL setOffset('wcmchnldoc',@recIdOffset);
+	SET @docIdOffset= IFNULL((SELECT MAX(documentId) from trs_hycloud_iip.wcmdocument),0);
+	CALL setOffset('wcmdocument',@docIdOffset);
+	SET @viewIdOffset= IFNULL((SELECT MAX(viewInfoId) from trs_hycloud_iip.xwcmviewinfo),0);
+	CALL setOffset('xwcmviewinfo',@viewIdOffset);
+	SET @tableInfoIdOffset= IFNULL((SELECT MAX(TABLEINFOID) from trs_hycloud_iip.xwcmtableinfo),0);
+	CALL setOffset('xwcmtableinfo',@tableInfoIdOffset);
+	SET @fieldIdOffset= IFNULL((SELECT MAX(dbFieldId) from trs_hycloud_iip.xwcmdbfieldinfo),0);
+	CALL setOffset('xwcmdbfieldinfo',@fieldIdOffset);
+	SET @channelSynIdOffset= IFNULL((SELECT MAX(channelSynId) from trs_hycloud_iip.wcmchannelsyn),0);
+	CALL setOffset('wcmchannelsyn',@channelSynIdOffset);
+	SET @templateIdOffset= IFNULL((SELECT MAX(templateId) from trs_hycloud_iip.wcmtemplate),0);
+	CALL setOffset('wcmtemplate',@templateIdOffset);
+	SET @folderPublishConfigIdOffset= IFNULL((SELECT MAX(folderPublishConfigId) from trs_hycloud_iip.wcmfolderpublishconfig),0);
+	CALL setOffset('wcmfolderpublishconfig',@folderPublishConfigIdOffset);
+	SET @templateEmployIdOffset= IFNULL((SELECT MAX(templateEmployId) from trs_hycloud_iip.wcmtemplateemploy),0);
+	CALL setOffset('wcmtemplateemploy',@templateEmployIdOffset);
+	SET @templateNestIdOffset= IFNULL((SELECT MAX(templateNestId) from trs_hycloud_iip.wcmtemplatenest),0);
+	CALL setOffset('wcmtemplatenest',@templateNestIdOffset);
+	SET @templateQuoteIdOffset= IFNULL((SELECT MAX(templateQuoteId) from trs_hycloud_iip.wcmtemplatequote),0);
+	CALL setOffset('wcmtemplatequote',@templateQuoteIdOffset);
+
+	SET @metaViewEmployerIdOffset= IFNULL((SELECT MAX(metaViewEmployerId) from trs_hycloud_iip.xwcmmetaviewemployer),0);
+	CALL setOffset('xwcmmetaviewemployer',@metaViewEmployerIdOffset);
+	SET @viewFieldInfoIdOffset= IFNULL((SELECT MAX(viewfieldinfoId) from trs_hycloud_iip.xwcmviewfieldinfo),0);
+	CALL setOffset('xwcmviewfieldinfo',@viewFieldInfoIdOffset);
+	SET @templateArgIdOffset= IFNULL((SELECT MAX(TEMPLATEARGUMENTID) from trs_hycloud_iip.wcmtemplateargument),0);
+	CALL setOffset('wcmtemplateargument',@templateArgIdOffset);
+	SET @classInfoIdOffset= IFNULL((SELECT MAX(classInfoId) from trs_hycloud_iip.xwcmclassinfo),0);
+	CALL setOffset('xwcmclassinfo',@classInfoIdOffset);
+	SET @classInfoViewIdOffset= IFNULL((SELECT MAX(classInfoViewId) from trs_hycloud_iip.xwcmclassinfoview),0);
+	CALL setOffset('xwcmclassinfoview',@classInfoViewIdOffset);
+    # xx ID 偏移量,为了和海云系统中的 xx ID 错开一段距离(原)
+    #字段分组不用迁移,旧环境分组无法复用
+    SET @metaViewFieldGroupIdOffset = 100000 * @n;
 
     call sp_data_migration_wcmappendix(@prevAppendixId, @appendixIdOffset, @docIdOffset);
     call sp_data_migration_wcmchannel(@prevChannelId, @siteIdOffset, @channelIdOffset);
@@ -89,7 +105,7 @@ CREATE PROCEDURE sp_city_n(IN n INT)
     call sp_data_migration_wcmmetatable(@citySuffix, @prevTableInfoId, @prevDocId, @docIdOffset, @channelIdOffset);
 
 
-
+    # 待优化
     # 迁移 MAS 视频,6个wcm节点的视频是在一起的。可重复执行。
 
     # 支持断点续传,上一次迁移的最后一个 xx ID