浏览代码

脚本支持增量更新数据6

lijihong 6 年之前
父节点
当前提交
cabba2e7cf

+ 24 - 0
TRS.WCM.Developer/贵州项目/0_update_data.sql

@@ -0,0 +1,24 @@
+# 预处理数据的SQL
+
+# 相关视频 FieldType 由 51 变为 20
+update trs_data_migration.XWCMDBFieldInfo set FieldType=20 where FieldType=51;
+update trs_data_migration.XWCMViewFieldInfo set FieldType=20 where FieldType=51;
+# 相关图片 FieldType 由 50 变为 32
+update trs_data_migration.XWCMDBFieldInfo set FieldType=32 where FieldType=50;
+update trs_data_migration.XWCMViewFieldInfo set FieldType=32 where FieldType=50;
+# 相关文档 FieldType 由 57 变为 31
+update trs_data_migration.XWCMDBFieldInfo set FieldType=31 where FieldType=57;
+update trs_data_migration.XWCMViewFieldInfo set FieldType=31 where FieldType=57;
+
+# mw_文本框 FieldType 由 53 变为 3
+update trs_data_migration.XWCMDBFieldInfo set FieldType=3 where FieldType in (53,65);
+update trs_data_migration.XWCMViewFieldInfo set FieldType=3 where FieldType in (53,65);
+# mw_是否按钮 FieldType 由 54 变为 5
+update trs_data_migration.XWCMDBFieldInfo set FieldType=5 where FieldType=54;
+update trs_data_migration.XWCMViewFieldInfo set FieldType=5 where FieldType=54;
+# mw_时间按钮FieldType 由 55 变为 11
+update trs_data_migration.XWCMDBFieldInfo set FieldType=11 where FieldType=55;
+update trs_data_migration.XWCMViewFieldInfo set FieldType=11 where FieldType=55;
+# mw_复杂编辑器 FieldType 由 63 变为 12
+update trs_data_migration.XWCMDBFieldInfo set FieldType=12 where FieldType=63;
+update trs_data_migration.XWCMViewFieldInfo set FieldType=12 where FieldType=63;

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

@@ -118,7 +118,7 @@ CREATE PROCEDURE sp_data_migration_wcmappendix(IN prevAppendixId BIGINT(20),
 
             SET @APPENDIXID = f_APPENDIXID;
             SET f_APPENDIXID = f_APPENDIXID + appendixIdOffset;
-            SET @doc_offset_num = ifnull((SELECT offset_num FROM data_migration_offset WHERE table_name = migr_table_name AND start_id < f_APPDOCID and  end_id >= f_APPDOCID), 0);
+            SET @doc_offset_num = ifnull((SELECT offset_num FROM data_migration_offset WHERE table_name = migr_table_name AND start_id < f_APPDOCID and  end_id >= f_APPDOCID), docIdOffset);
             SET f_APPDOCID = f_APPDOCID + @doc_offset_num;
 
             insert into trs_hycloud_iip.wcmappendix

+ 8 - 2
TRS.WCM.Developer/贵州项目/3_sp_data_migration_wcmchannel.sql

@@ -195,8 +195,14 @@ CREATE PROCEDURE sp_data_migration_wcmchannel(IN prevChnlId BIGINT(20),
             SET @site_offset_num = ifnull((SELECT offset_num FROM data_migration_offset WHERE table_name = site_migr_table_name AND start_id < f_SITEID and  end_id >= f_SITEID), siteIdOffset);
             SET f_SITEID = f_SITEID + @site_offset_num;
 
-            SET @channel_offset_num = ifnull((SELECT offset_num FROM data_migration_offset WHERE table_name = migr_table_name AND start_id < f_PARENTID and  end_id >= f_PARENTID), channelIdOffset);
-            SET f_PARENTID = f_PARENTID + @channel_offset_num;
+            # 当父栏目为0时,表示根节点
+            IF (f_PARENTID = 0) THEN
+              SET f_PARENTID = 0;
+            else
+              SET @channel_offset_num = ifnull((SELECT offset_num FROM data_migration_offset WHERE table_name = migr_table_name AND start_id < f_PARENTID and  end_id >= f_PARENTID), channelIdOffset);
+              SET f_PARENTID = f_PARENTID + @channel_offset_num;
+            END IF;
+
 
             insert into trs_hycloud_iip.wcmchannel
               (

+ 133 - 0
TRS.WCM.Developer/贵州项目/3_sp_data_migration_xwcmmaterial.sql

@@ -0,0 +1,133 @@
+use trs_data_migration;
+
+DROP PROCEDURE IF EXISTS sp_data_migration_xwcmmaterial;
+DELIMITER $$
+CREATE PROCEDURE sp_data_migration_xwcmmaterial(IN prevAppendixId BIGINT(20),
+                                              IN appendixIdOffset BIGINT(20),
+                                              IN docIdOffset BIGINT(20))
+BEGIN
+
+	  DECLARE isover INT DEFAULT 0;
+
+    DECLARE migr_table_name varchar(255) DEFAULT 'xwcmmaterial';
+
+    DECLARE f_APPENDIXID int(11) DEFAULT 0;
+    DECLARE f_APPDOCID int(11) DEFAULT 0;
+    DECLARE f_APPFLAG smallint(6) DEFAULT NULL;
+    DECLARE f_APPFILE varchar(255) DEFAULT 0;
+    DECLARE f_AppFromId int(11) DEFAULT '0';
+		DECLARE f_AppFromType int(11) DEFAULT '0';
+		DECLARE f_CRUSER varchar(50) DEFAULT NULL;
+    DECLARE f_CRTIME datetime DEFAULT NULL;
+
+
+  DECLARE cur CURSOR FOR
+    SELECT
+      a.MATERIALQUOTEID,
+      a.DOCID,
+      b.MATERIALTYPE,
+      b.FILENAME,
+      b.MASID,
+      b.CrUser,
+      b.CrTime
+    FROM
+      trs_data_migration.xwcmmaterialquote a
+      LEFT JOIN trs_data_migration.xwcmmaterial b ON a.MATERIALID = b.MATERIALID
+    WHERE b.MATERIALTYPE IN (1, 2)
+    ORDER BY
+      a.MATERIALQUOTEID ASC;
+
+	DECLARE CONTINUE HANDLER FOR NOT FOUND SET isover = 1;
+
+	OPEN cur;
+
+	FETCH cur INTO
+    f_APPENDIXID,
+    f_APPDOCID,
+    f_APPFLAG,
+    f_APPFILE,
+    f_AppFromId,
+    f_CRUSER,
+    f_CRTIME
+    ;
+
+
+    select concat('开始迁移 ', migr_table_name) info;
+
+
+
+    WHILE isover = 0 DO
+
+      # 断点续传
+      IF (f_APPENDIXID > prevAppendixId)
+
+        THEN
+
+            SET @APPENDIXID = f_APPENDIXID;
+            SET f_APPENDIXID = f_APPENDIXID + appendixIdOffset;
+
+            SET @doc_offset_num = ifnull((SELECT offset_num FROM data_migration_offset WHERE table_name = migr_table_name AND start_id < f_APPDOCID and  end_id >= f_APPDOCID), docIdOffset);
+            SET f_APPDOCID = f_APPDOCID + @doc_offset_num;
+						IF (f_APPFLAG = 1)
+            THEN
+              SET f_APPFLAG = 80;
+							SET f_AppFromId = 0;
+							SET f_AppFromType = 0;
+						END IF;
+						IF (f_APPFLAG = 2)
+            THEN
+              SET f_APPFLAG = 90;
+							SET f_APPFILE = f_AppFromId;
+							SET f_AppFromType = 1;
+						END IF;
+
+            insert into trs_hycloud_iip.wcmappendix
+              (
+                APPENDIXID,
+                APPDOCID,
+                APPFILE,
+                APPFILETYPE,
+                APPFLAG,
+                CRUSER,
+                CRTIME,
+                AppFromType,
+                AppFromId
+              )
+              VALUES
+                (
+                  f_APPENDIXID,
+                  f_APPDOCID,
+                  f_APPFILE,
+                  -1,
+                  f_APPFLAG,
+                  f_CRUSER,
+                  f_CRTIME,
+                  f_AppFromType,
+                  f_AppFromId
+                );
+
+          SET @log_sql = trs_data_migration.build_migration_log_sql(migr_table_name, @APPENDIXID, now());
+
+          prepare stmt from @log_sql;
+          EXECUTE stmt;
+          deallocate prepare stmt;
+    END IF ;
+
+		FETCH cur INTO
+    f_APPENDIXID,
+    f_APPDOCID,
+    f_APPFLAG,
+    f_APPFILE,
+    f_AppFromId,
+    f_CRUSER,
+    f_CRTIME
+    ;
+
+	END WHILE;
+
+	CLOSE cur;
+
+    select concat('完成迁移 ', migr_table_name) info;
+
+	END $$
+DELIMITER ;

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

@@ -113,13 +113,20 @@ CREATE PROCEDURE sp_city_n(IN n INT)
     SET @prevMasId = ifnull((SELECT prev_id from trs_data_migration.data_migration_log where table_name = 'mas_masid'), 0);
     SET @prevMasVideoId = ifnull((SELECT prev_id from trs_data_migration.data_migration_log where table_name = 'mas_masvideo'), 0);
 
+    SET @prevMaterialquoteId = ifnull((SELECT prev_id from trs_data_migration.data_migration_log where table_name = 'xwcmmaterial'), 0);
+
     SET @maxMasId = IFNULL((SELECT MAX(ID) from trs_mas.mas_masid),0);
     SET @masIdOffset = @maxMasId - @prevMasId;
     SET @maxMasVideoId = IFNULL((SELECT MAX(ID) from trs_mas.mas_videostream),0);
     SET @masVideoIdOffset = @maxMasVideoId - @prevMasVideoId;
 
+    SET @maxNAppendixId= IFNULL((SELECT MAX(appendixId) from trs_hycloud_iip.wcmappendix),0);
+	  SET @nappendixIdOffset = @maxNAppendixId - @prevMaterialquoteId;
+
     call trs_data_migration.sp_data_migration_masid(@prevMasId, @masIdOffset);
     call trs_data_migration.sp_data_migration_masvideo(@prevMasVideoId, @masVideoIdOffset);
+    #处理素材表
+    call trs_data_migration.sp_data_migration_xwcmmaterial(@prevMaterialquoteId, @nappendixIdOffset, @docIdOffset);
 
   END $$
 DELIMITER ;

+ 1 - 1
TRS.WCM.Developer/贵州项目/全量迁移/3_sp_data_migration_wcmchnldoc.sql

@@ -93,7 +93,7 @@ CREATE PROCEDURE sp_data_migration_wcmchnldoc (
 	0,
 	0,
 	NULL,
-	RECID + recIdOffset,
+	0,
 	NULL,
 	0,
 	NULL

+ 18 - 0
TRS.WCM.Developer/贵州项目/全量迁移/3_sp_data_migration_wcmmetatable.sql

@@ -59,7 +59,25 @@ CREATE PROCEDURE sp_data_migration_wcmmetatable(IN citySuffix VARCHAR(20),
             prepare stmt from @log_sql;
             EXECUTE stmt;
             deallocate prepare stmt;
+            #更新当前表的ID字段名称
+            set @id_field_sql = concat('ALTER TABLE trs_hycloud_iip.wcmmetatable', f_TABLENAME, citySuffix,
+            ' CHANGE COLUMN `WCMMetaTable',f_TABLENAME,
+                                 'ID` `wcmmetatable',f_TABLENAME, citySuffix,
+                                 'ID`  int(11) NOT NULL;');
+            prepare stmt from @id_field_sql;
+            EXECUTE stmt;
+            deallocate prepare stmt;
+            #设置ID的最大值
+            set @max_sql = concat('SELECT max(wcmmetatable', f_TABLENAME, citySuffix, 'ID) into @meta_data_id from trs_hycloud_iip.wcmmetatable', f_TABLENAME, citySuffix);
+            prepare stmt from @max_sql;
+            EXECUTE stmt;
+            deallocate prepare stmt;
 
+            set @id_sql = concat('INSERT INTO trs_hycloud_iip.wcmid VALUES (','\'','wcmmetatable',
+                                 f_TABLENAME, citySuffix, '\'',', ', @meta_data_id + 1,', 1, ','\'','wcmmetatable',f_TABLENAME, citySuffix,'ID','\'',');');
+            prepare stmt from @id_sql;
+            EXECUTE stmt;
+            deallocate prepare stmt;
 
             select concat('完成更新 ', 'wcmmetatable', f_TABLENAME, citySuffix, '.MetaDataId & ChannelId') info;
         END IF ;