Browse Source

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

lin.chen 7 years ago
parent
commit
52e331a6a5

+ 24 - 16
TRS.WCM.Developer/贵州项目/3_sp_data_migration_wcmmetatable.sql

@@ -3,7 +3,8 @@ use trs_data_migration;
 
 DROP PROCEDURE IF EXISTS sp_data_migration_wcmmetatable;
 DELIMITER $$
-CREATE PROCEDURE sp_data_migration_wcmmetatable(IN prevTableInfoId VARCHAR(100),
+CREATE PROCEDURE sp_data_migration_wcmmetatable(IN citySuffix VARCHAR(20),
+                                              IN prevTableInfoId VARCHAR(100),
                                               IN prevDocId BIGINT(20),
                                               IN docIdOffset BIGINT(20),
                                               IN channelIdOffset BIGINT(20))
@@ -40,27 +41,34 @@ CREATE PROCEDURE sp_data_migration_wcmmetatable(IN prevTableInfoId VARCHAR(100),
 
       THEN
 
-        select concat('开始更新 ', 'wcmmetatable', f_TABLENAME, '.MetaDataId & ChannelId') info;
 
-        # 由于元数据表是动态生成的,执行存储过程前,需要提前将所有元数据表(结构+数据)直接复制至海云
-        # 迁移后的元数据,其元数据ID不能和其他元数据表中的ID发生冲突,需要更改,因此有了以下SQL
-        SET @log_sql = concat('UPDATE trs_hycloud_iip.', f_TABLENAME,
-                          ' SET MetaDataId = MetaDataId + ', docIdOffset,
-                          ', ChannelId = ChannelId + ', channelIdOffset,
-                          ' WHERE MetaDataId > ', prevDocId);
+        SET @metaTableExists = (SELECT count(1) from information_schema.tables where table_schema = 'trs_hycloud_iip' and table_name = concat('wcmmetatable', f_TABLENAME, citySuffix) );
 
-        prepare stmt from @log_sql;
-        EXECUTE stmt;
-        deallocate prepare stmt;
+        IF (@metaTableExists > 0)
 
-        SET @log_sql = trs_data_migration.build_migration_log_sql(concat('wcmmetatable', f_TABLENAME), -1);
+          THEN
 
-        prepare stmt from @log_sql;
-        EXECUTE stmt;
-        deallocate prepare stmt;
+            select concat('开始更新 ', 'wcmmetatable', f_TABLENAME, citySuffix, '.MetaDataId & ChannelId') info;
 
-        select concat('完成更新 ', 'wcmmetatable', f_TABLENAME, '.MetaDataId & ChannelId') info;
+            # 由于元数据表是动态生成的,执行存储过程前,需要提前将所有元数据表(结构+数据)直接复制至海云
+            # 迁移后的元数据,其元数据ID不能和其他元数据表中的ID发生冲突,需要更改,因此有了以下SQL
+            SET @log_sql = concat('UPDATE trs_hycloud_iip.wcmmetatable', f_TABLENAME, citySuffix,
+                              ' SET MetaDataId = MetaDataId + ', docIdOffset,
+                              ', ChannelId = ChannelId + ', channelIdOffset,
+                              ' WHERE MetaDataId > ', prevDocId);
 
+            prepare stmt from @log_sql;
+            EXECUTE stmt;
+            deallocate prepare stmt;
+
+            SET @log_sql = trs_data_migration.build_migration_log_sql(concat('wcmmetatable', f_TABLENAME, citySuffix), -1);
+
+            prepare stmt from @log_sql;
+            EXECUTE stmt;
+            deallocate prepare stmt;
+
+            select concat('完成更新 ', 'wcmmetatable', f_TABLENAME, citySuffix, '.MetaDataId & ChannelId') info;
+        END IF ;
 
       END IF ;
 

+ 51 - 1
TRS.WCM.Developer/贵州项目/3_sp_data_migration_wcmwebsite.sql

@@ -3,11 +3,13 @@ use trs_data_migration;
 
 DROP PROCEDURE IF EXISTS sp_data_migration_wcmwebsite;
 DELIMITER $$
-CREATE PROCEDURE sp_data_migration_wcmwebsite(IN prevSiteId BIGINT(20), IN siteIdOffset BIGINT(20))
+CREATE PROCEDURE sp_data_migration_wcmwebsite(IN citySuffix VARCHAR(255), IN prevSiteId BIGINT(20), IN siteIdOffset BIGINT(20))
 	BEGIN 
 	
 	  DECLARE isover INT DEFAULT 0;
 
+	  DECLARE v_classificationId INT DEFAULT 0;
+
     DECLARE migr_table_name varchar(255) DEFAULT 'wcmwebsite';
 	
     DECLARE f_SITEID int(11) DEFAULT 0;
@@ -155,6 +157,27 @@ CREATE PROCEDURE sp_data_migration_wcmwebsite(IN prevSiteId BIGINT(20), IN siteI
     select concat('开始迁移 ', migr_table_name) info;
 
 
+    # 新建站点分类
+    SELECT ifnull(max(classificationId), 0) into v_classificationId from trs_hycloud_iip.wcmclassification;
+    #select v_classificationId;
+    SET @saveClassification_sql =  concat('insert into ',
+                                             'trs_hycloud_iip.wcmclassification (',
+                                                 'CLASSIFICATIONID,',
+                                                 'CNAME,',
+                                                 'CSHORTNAME,',
+                                                 'CTYPE',
+                                             ') ',
+                                             'values(',
+                                                (v_classificationId + 1), ',',
+                                                '\'', '贵州迁移站点_', citySuffix, '\',',
+                                                '\'', right(citySuffix, 5), '\',',
+                                                '11',
+                                             ') ');
+    prepare stmt from @saveClassification_sql;
+    EXECUTE stmt;
+    deallocate prepare stmt;
+
+
 
     WHILE isover= 0 DO
 
@@ -260,6 +283,31 @@ CREATE PROCEDURE sp_data_migration_wcmwebsite(IN prevSiteId BIGINT(20), IN siteI
           prepare stmt from @log_sql;
           EXECUTE stmt;
           deallocate prepare stmt;
+
+
+          # 插入 站点分类-站点 关系数据
+          set @classificationObjId = (SELECT ifnull(max(classificationObjId), 0) from trs_hycloud_iip.wcmclassificationobj);
+
+          # select @classificationObjId;
+
+          SET @saveClassificationObj_sql =  concat('insert into ',
+                             'trs_hycloud_iip.wcmclassificationobj (',
+                               'classificationObjId,',
+                               'classificationId,',
+                               'objType,',
+                               'objId',
+                             ') ',
+                             'values(',
+                                 (@classificationObjId + 1), ',',
+                                 v_classificationId, ',',
+                                 '103,',
+                                 f_SITEID,
+                             ') ');
+          prepare stmt from @saveClassificationObj_sql;
+          EXECUTE stmt;
+          deallocate prepare stmt;
+
+
     END IF ;
 
 		FETCH cur INTO
@@ -313,5 +361,7 @@ CREATE PROCEDURE sp_data_migration_wcmwebsite(IN prevSiteId BIGINT(20), IN siteI
     select concat('完成迁移 ', migr_table_name) info;
 
 
+
+
   END $$
 DELIMITER ;

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

@@ -77,7 +77,7 @@ CREATE PROCEDURE sp_city_n(IN n INT)
     call sp_data_migration_wcmtemplateemploy(@prevTemplateEmployId, @templateEmployIdOffset, @templateIdOffset, @siteIdOffset, @channelIdOffset);
     call sp_data_migration_wcmtemplatenest(@prevTemplateNestId, @templateNestIdOffset);
     call sp_data_migration_wcmtemplatequote(@prevTemplateQuoteId, @templateQuoteIdOffset, @templateIdOffset, @siteIdOffset, @channelIdOffset);
-    call sp_data_migration_wcmwebsite(@prevSiteId, @siteIdOffset);
+    call sp_data_migration_wcmwebsite(@citySuffix, @prevSiteId, @siteIdOffset);
     call sp_data_migration_xwcmclassinfo(@prevClassInfoId, @classInfoIdOffset);
     call sp_data_migration_xwcmclassinfoview(@prevClassInfoViewId, @classInfoViewIdOffset, @classInfoIdOffset, @docIdOffset, @viewIdOffset);
     call sp_data_migration_xwcmdbfieldinfo(@citySuffix, @prevFieldId, @fieldIdOffset, @prevClassInfoId, @tableInfoIdOffset);
@@ -86,7 +86,7 @@ CREATE PROCEDURE sp_city_n(IN n INT)
     call sp_data_migration_xwcmtableinfo(@citySuffix, @prevTableInfoId, @tableInfoIdOffset);
     call sp_data_migration_xwcmviewfieldinfo(@citySuffix, @prevViewFieldInfoId, @viewFieldInfoIdOffset, @tableInfoIdOffset, @prevClassInfoId, @dbFieldIdOffset, @metaViewFieldGroupIdOffset, @viewIdOffset, @viewIdOffset);
     call sp_data_migration_xwcmviewinfo(@citySuffix, @prevViewId, @viewIdOffset, @tableInfoIdOffset);
-    call sp_data_migration_wcmmetatable(@prevTableInfoId, @prevDocId, @docIdOffset, @channelIdOffset);
+    call sp_data_migration_wcmmetatable(@citySuffix, @prevTableInfoId, @prevDocId, @docIdOffset, @channelIdOffset);
 
 
 

+ 61 - 1
TRS.WCM.Developer/贵州项目/6_recover.sql

@@ -1,6 +1,9 @@
 
 
 
+DELETE from trs_hycloud_iip.wcmclassification where CNAME like '贵州迁移站点__city%';
+DELETE from trs_hycloud_iip.wcmclassificationobj where OBJTYPE = 103 and OBJID > 100000;
+
 delete from trs_hycloud_iip.wcmwebsite where siteid > 100000;
 delete from trs_hycloud_iip.xwcmviewinfo where viewinfoid > 100000;
 delete from trs_hycloud_iip.xwcmtableinfo where tableinfoid > 100000;
@@ -32,4 +35,61 @@ delete from trs_hycloud_iip.wcmdocument where docid > 10000000;
 delete from trs_mas.mas_masid where id > 1000000;
 delete from trs_mas.mas_masvideo where id > 1000000;
 
-delete from trs_data_migration.data_migration_log;
+delete from trs_data_migration.data_migration_log;
+
+/**
+# 清理元数据
+USE trs_data_migration;
+
+DROP PROCEDURE IF EXISTS sp_delete_metatables;
+DELIMITER $$
+CREATE PROCEDURE sp_delete_metatables()
+	BEGIN
+
+	  DECLARE isover INT DEFAULT 0;
+
+    DECLARE  f_TABLENAME varchar(50) DEFAULT NULL;
+
+
+
+  DECLARE cur CURSOR FOR
+		SELECT
+      TABLENAME
+    FROM trs_data_migration.xwcmtableinfo
+		ORDER BY TABLEINFOID asc;
+
+	DECLARE CONTINUE HANDLER FOR NOT FOUND SET isover = 1;
+
+	OPEN cur;
+
+	FETCH cur INTO
+    f_TABLENAME
+    ;
+
+  WHILE isover = 0 DO
+
+    SET @sql = concat('create table if not exists ', 'trs_hycloud_iip.wcmmetatable', f_TABLENAME, '(', f_TABLENAME ,'ID INT);');
+
+    prepare stmt from @sql;
+    EXECUTE stmt;
+    deallocate prepare stmt;
+
+    SET @sql = concat('truncate table ', 'trs_hycloud_iip.wcmmetatable', f_TABLENAME);
+
+    prepare stmt from @sql;
+    EXECUTE stmt;
+    deallocate prepare stmt;
+
+    FETCH cur INTO
+      f_TABLENAME
+      ;
+
+  END WHILE;
+
+	CLOSE cur;
+
+  END $$
+DELIMITER ;
+
+CALL trs_data_migration.sp_delete_metatables();
+**/