Przeglądaj źródła

数据迁移的存储过程[5]

lin.chen 7 lat temu
rodzic
commit
d35988f75a

+ 37 - 26
TRS.WCM.Developer/sp/call_p.sql

@@ -1,4 +1,11 @@
 
+
+# !!!执行存储过程前,需要提前将所有元数据表(结构+数据)直接复制至海云
+# !!!执行存储过程前,需要提前将所有元数据表(结构+数据)直接复制至海云
+# !!!执行存储过程前,需要提前将所有元数据表(结构+数据)直接复制至海云
+# !!!如果存在重名的元数据表,则终止,并反馈给研发
+
+
 pager cat >> /tmp/p_data_migration.log;
 
 
@@ -21,29 +28,31 @@ SET @prevMetaViewEmployerId = 0;
 SET @prevTableInfoId = 0;
 SET @prevViewFieldId = 0;
 SET @prevViewId = 0;
+SET @prevMetaViewFieldGroupId = 0;
+
 
 # xx ID 偏移量,为了和海云系统中的 xx ID 错开一段距离
-SET @siteIdOffset = 0;
-SET @channelIdOffset = 0;
-SET @channelSynIdOffset = 0;
-SET @templateIdOffset = 0;
-SET @recIdOffset = 0;
-SET @docIdOffset = 0;
-SET @viewIdOffset = 0;
-SET @folderPublishConfigIdOffset = 0;
-SET @templateArgIdOffset = 0;
-SET @templateEmployIdOffset = 0;
-SET @templateNestIdOffset = 0;
-SET @templateQuoteIdOffset = 0;
-SET @classInfoIdOffset = 0;
-SET @metaDataIdOffset = 0;
-SET @fieldIdOffset = 0;
-SET @classIdOffset = 0; #TODO
-SET @tableInfoIdOffset = 0;
-SET @metaViewEmployerIdOffset = 0;
-SET @viewFieldIdOffset = 0;
-SET @dbFieldIdOffset = 0;
-SET @fieldGroupIdOffset = 0;
+SET @siteIdOffset = 1000;
+SET @channelIdOffset = 100000;
+SET @channelSynIdOffset = 100000;
+SET @templateIdOffset = 100000;
+SET @recIdOffset = 1000000;
+SET @docIdOffset = 1000000;
+SET @viewIdOffset = 1000;
+SET @folderPublishConfigIdOffset = 100000;
+SET @templateArgIdOffset = 100000;
+SET @templateEmployIdOffset = 100000;
+SET @templateNestIdOffset = 100000;
+SET @templateQuoteIdOffset = 100000;
+SET @classInfoIdOffset = 10000;
+SET @fieldIdOffset = 100000;
+SET @tableInfoIdOffset = 1000;
+SET @metaViewEmployerIdOffset = 100000;
+SET @viewFieldIdOffset = 100000;
+SET @dbFieldIdOffset = 100000;
+SET @fieldGroupIdOffset = 1000;
+SET @metaViewFieldGroupIdOffset = 1000;
+
 
 call p_data_migration_wcmchannel(@prevChannelId, @siteIdOffset, @channelIdOffset);
 call p_data_migration_wcmchannelchildindexquote(@templateIdOffset, @siteIdOffset, @channelIdOffset);
@@ -51,7 +60,6 @@ call p_data_migration_wcmchannelsyn(@prevChannelSynId, @channelSynIdOffset, @cha
 call p_data_migration_wcmchnldoc(@prevRecId, @recIdOffset, @prevDocId, @siteIdOffset, @channelIdOffset);
 call p_data_migration_wcmdocument(@prevDocId, @prevDocId, @viewIdOffset, @siteIdOffset, @channelIdOffset);
 call p_data_migration_wcmfolderpublishconfig(@prevFolderPublishConfigId, @folderPublishConfigIdOffset, @siteIdOffset, @channelIdOffset);
-call p_data_migration_wcmmetatable('wcmmetatable', @prevDocId, @docIdOffset, @channelIdOffset);
 call p_data_migration_wcmtemplate(@prevTemplateId, @templateIdOffset, @siteIdOffset, @channelIdOffset);
 call p_data_migration_wcmtemplateargument(@prevTemplateArgId, @templateArgIdOffset, @siteIdOffset, @channelIdOffset);
 call p_data_migration_wcmtemplateemploy(@prevTemplateEmployId, @templateEmployIdOffset, @siteIdOffset, @channelIdOffset);
@@ -59,11 +67,14 @@ call p_data_migration_wcmtemplatenest(@prevTemplateNestId, @templateNestIdOffset
 call p_data_migration_wcmtemplatequote(@prevTemplateQuoteId, @templateQuoteIdOffset, @siteIdOffset, @channelIdOffset);
 call p_data_migration_wcmwebsite(@prevSiteId, @siteIdOffset);
 call p_data_migration_xwcmclassinfo(@prevClassInfoId, @classInfoIdOffset);
-call p_data_migration_xwcmclassinfoview(@prevClassInfoViewId, @classInfoIdOffset, @metaDataIdOffset, @viewIdOffset);
-call p_data_migration_xwcmdbinfo(@prevFieldId, @fieldIdOffset, @classIdOffset, @tableInfoIdOffset);
+call p_data_migration_xwcmclassinfoview(@prevClassInfoViewId, @classInfoIdOffset, @docIdOffset, @viewIdOffset);
+call p_data_migration_xwcmdbinfo(@prevFieldId, @fieldIdOffset, @prevClassInfoId, @tableInfoIdOffset);
 call p_data_migration_xwcmmetaviewemployer(@prevMetaViewEmployerId, @metaViewEmployerIdOffset, @channelIdOffset);
 call p_data_migration_xwcmtableinfo(@prevTableInfoId, @tableInfoIdOffset);
-call p_data_migration_xwcmviewfieldinfo(@prevViewFieldId, @viewFieldIdOffset, @tableInfoIdOffset, @classIdOffset, @dbFieldIdOffset, @fieldGroupIdOffset, @viewIdOffset, @viewIdOffset);
-call p_data_migration_xwcmviewinfo(@prevViewId, @viewIdOffset, @metaDataIdOffset);
+call p_data_migration_wcmmetatable(@prevTableInfoId, @prevDocId, @docIdOffset, @channelIdOffset);
+call p_data_migration_xwcmviewfieldinfo(@prevViewFieldId, @viewFieldIdOffset, @tableInfoIdOffset, @prevClassInfoId, @dbFieldIdOffset, @fieldGroupIdOffset, @viewIdOffset, @viewIdOffset);
+call p_data_migration_xwcmviewinfo(@prevViewId, @viewIdOffset, @mainTableIdOffset);
+call p_data_migration_xwcmmetaviewfieldgroup(@prevMetaViewFieldGroupId, @metaViewFieldGroupIdOffset, @viewIdOffset);
+
 
 nopager;

+ 49 - 12
TRS.WCM.Developer/sp/p_data_migration_wcmmetatable.sql

@@ -1,23 +1,60 @@
 
 DROP PROCEDURE IF EXISTS p_data_migration_wcmmetatable;
 DELIMITER $$
-CREATE PROCEDURE p_data_migration_wcmmetatable(IN metaTableName VARCHAR(100),
+CREATE PROCEDURE p_data_migration_wcmmetatable(IN prevTableInfoId VARCHAR(100),
                                               IN prevDocId BIGINT(20),
                                               IN docIdOffset BIGINT(20),
                                               IN channelIdOffset BIGINT(20))
 
-	BEGIN 
-	
-	  SET @sql = concat('UPDATE trs_hycloud_iip.', metaTableName,
-                      ' SET MetaDataId = MetaDataId + ', docIdOffset,
-                      ', ChannelId = ChannelId + ', channelIdOffset,
-                      ' WHERE MetaDataId > ', prevDocId);
+	BEGIN
 
-    prepare stmt from @sql;
-    EXECUTE stmt;
-    deallocate prepare stmt;
+    DECLARE cur CURSOR FOR
+      SELECT
+        TABLENAME
+      FROM v_wcm.xwcmtableinfo
+      ORDER BY TABLEINFOID asc;
+
+    DECLARE CONTINUE HANDLER FOR NOT FOUND SET over = 1;
+
+    OPEN cur;
+
+    FETCH cur INTO
+      f_TABLENAME
+    ;
+
+
+
+    WHILE over= 0 DO
+
+      # 断点续传
+      IF (f_TABLEINFOID > prevTableInfoId)
+
+      THEN
+
+        # 由于元数据表是动态生成的,执行存储过程前,需要提前将所有元数据表(结构+数据)直接复制至海云
+        # 迁移后的元数据,其元数据ID不能和其他元数据表中的ID发生冲突,需要更改,因此有了以下SQL
+        SET @sql = concat('UPDATE trs_hycloud_iip.', f_TABLENAME,
+                          ' SET MetaDataId = MetaDataId + ', docIdOffset,
+                          ', ChannelId = ChannelId + ', channelIdOffset,
+                          ' WHERE MetaDataId > ', prevDocId);
+
+        prepare stmt from @sql;
+        EXECUTE stmt;
+        deallocate prepare stmt;
+
+        SELECT CONCAT('成功升级 wcmmetatable', f_TABLENAME, ' 的MetaDataId和ChannelId') ;
+
+      END IF ;
+
+    FETCH cur INTO
+      f_TABLENAME
+    ;
+
+    END WHILE;
+
+    CLOSE cur;
+
+    SELECT concat('升级 wcmmetatable', f_TABLENAME, ' 完毕');
 
-    SELECT concat('迁移 ', metaTableName, ' 完毕');
-		
 	END$$
 DELIMITER ;

+ 2 - 2
TRS.WCM.Developer/sp/p_data_migration_xwcmclassinfoview.sql

@@ -3,7 +3,7 @@ DROP PROCEDURE IF EXISTS p_data_migration_xwcmclassinfoview;
 DELIMITER $$
 CREATE PROCEDURE p_data_migration_xwcmclassinfoview(IN prevClassInfoViewId BIGINT(20),
                                               IN classInfoIdOffset BIGINT(20),
-                                              IN metaDataIdOffset BIGINT(20),
+                                              IN docIdOffset BIGINT(20),
                                               IN viewIdOffset BIGINT(20))
 	BEGIN
 	
@@ -53,7 +53,7 @@ CREATE PROCEDURE p_data_migration_xwcmclassinfoview(IN prevClassInfoViewId BIGIN
           SET @CLASSINFOVIEWID = f_CLASSINFOVIEWID;
           SET f_CLASSINFOVIEWID = f_CLASSINFOVIEWID + prevClassInfoViewId;
           SET f_CLASSINFOID = f_CLASSINFOID + classInfoIdOffset;
-          SET f_METADATAID = f_METADATAID + metaDataIdOffset;
+          SET f_METADATAID = f_METADATAID + docIdOffset;
           SET f_VIEWID = f_VIEWID + viewIdOffset;
 
 

+ 2 - 2
TRS.WCM.Developer/sp/p_data_migration_xwcmdbinfo.sql

@@ -3,7 +3,7 @@ DROP PROCEDURE IF EXISTS p_data_migration_xwcmdbfieldinfo;
 DELIMITER $$
 CREATE PROCEDURE p_data_migration_xwcmdbfieldinfo(IN prevFieldId BIGINT(20),
                                               IN fieldIdOffset BIGINT(20),
-                                              IN classIdOffset BIGINT(20),
+                                              IN classInfoIdOffset BIGINT(20),
                                               IN tableIdOffset BIGINT(20))
 	BEGIN
 	
@@ -92,7 +92,7 @@ CREATE PROCEDURE p_data_migration_xwcmdbfieldinfo(IN prevFieldId BIGINT(20),
             SET @DBFIELDINFOID = f_DBFIELDINFOID;
             SET f_DBFIELDINFOID = f_DBFIELDINFOID + fieldIdOffset;
             SET f_TABLEID = f_TABLEID + tableIdOffset;
-            SET f_CLASSID = f_CLASSID + classIdOffset;
+            SET f_CLASSID = f_CLASSID + classInfoIdOffset;
 
             insert into trs_hycloud_iip.xwcmtableinfo
               (

+ 101 - 0
TRS.WCM.Developer/sp/p_data_migration_xwcmmetaviewfieldgroup.sql

@@ -0,0 +1,101 @@
+
+DROP PROCEDURE IF EXISTS p_data_migration_xwcmmetaviewfieldgroup;
+DELIMITER $$
+CREATE PROCEDURE p_data_migration_xwcmmetaviewfieldgroup(IN prevMetaViewFieldGroupId BIGINT(20),
+                                              IN metaViewFieldGroupIdOffset BIGINT(20),
+                                              IN viewIdOffset BIGINT(20))
+	BEGIN
+	
+	  DECLARE over INT DEFAULT 0;
+
+    DECLARE  f_METAVIEWFIELDGROUPID int(11) DEFAULT NULL;
+    DECLARE  f_GROUPNAME varchar(50) DEFAULT '0';
+    DECLARE  f_METAVIEWID int(11) DEFAULT '0';
+    DECLARE  f_PARENTID int(11) DEFAULT NULL;
+    DECLARE  f_CRUSER varchar(30) DEFAULT NULL;
+    DECLARE  f_CRTIME datetime DEFAULT NULL;
+    DECLARE  f_GROUPORDER int(11) DEFAULT '0';
+
+
+  DECLARE cur CURSOR FOR
+		SELECT
+      METAVIEWFIELDGROUPID,
+      GROUPNAME,
+      METAVIEWID,
+      PARENTID,
+      CRUSER,
+      CRTIME,
+      GROUPORDER
+    FROM v_wcm.xwcmmetaviewfieldgroup
+		ORDER BY METAVIEWFIELDGROUPID asc;
+
+	DECLARE CONTINUE HANDLER FOR NOT FOUND SET over = 1;
+	
+	OPEN cur;
+	
+	FETCH cur INTO
+    f_METAVIEWFIELDGROUPID,
+    f_GROUPNAME,
+    f_METAVIEWID,
+    f_PARENTID,
+    f_CRUSER,
+    f_CRTIME,
+    f_GROUPORDER
+    ;
+
+
+
+    WHILE over= 0 DO
+
+      # 断点续传
+      IF (f_METAVIEWFIELDGROUPID > prevMetaViewFieldGroupId)
+
+        THEN
+
+            SET @METAVIEWFIELDGROUPID = f_METAVIEWFIELDGROUPID;
+            SET f_METAVIEWFIELDGROUPID = f_METAVIEWFIELDGROUPID + metaViewFieldGroupIdOffset;
+            SET f_METAVIEWID = f_METAVIEWID + viewIdOffset;
+            SET f_PARENTID = f_PARENTID + metaViewFieldGroupIdOffset;
+
+            insert into trs_hycloud_iip.xwcmmetaviewfieldgroup
+              (
+                METAVIEWFIELDGROUPID,
+                GROUPNAME,
+                METAVIEWID,
+                PARENTID,
+                CRUSER,
+                CRTIME,
+                GROUPORDER
+              )
+              VALUES
+                (
+                  f_METAVIEWFIELDGROUPID,
+                  f_GROUPNAME,
+                  f_METAVIEWID,
+                  f_PARENTID,
+                  f_CRUSER,
+                  f_CRTIME,
+                  f_GROUPORDER
+                );
+
+            SELECT CONCAT('成功迁移 xwcmmetaviewfieldgroup[METAVIEWFIELDGROUPID=', @METAVIEWFIELDGROUPID, ']') ;
+    END IF ;
+
+		FETCH cur INTO
+      f_METAVIEWFIELDGROUPID,
+      f_GROUPNAME,
+      f_METAVIEWID,
+      f_PARENTID,
+      f_CRUSER,
+      f_CRTIME,
+      f_GROUPORDER
+      ;
+		
+	END WHILE;
+	
+	CLOSE cur;
+
+  SELECT '迁移 xwcmmetaviewfieldgroup 完毕';
+		
+	END$$
+DELIMITER ;