ソースを参照

脚本支持增量更新数据5

lijihong 6 年 前
コミット
b5ed614df8

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

@@ -0,0 +1,122 @@
+USE trs_data_migration;
+DROP PROCEDURE
+IF
+	EXISTS sp_data_migration_wcmchnldoc;
+
+DELIMITER $$
+CREATE PROCEDURE sp_data_migration_wcmchnldoc (
+	IN prevRecId BIGINT ( 20 ),
+	IN recIdOffset BIGINT ( 20 ),
+	IN docIdOffset BIGINT ( 20 ),
+	IN siteIdOffset BIGINT ( 20 ),
+	IN channelIdOffset BIGINT ( 20 ),
+	IN docKindOffset BIGINT ( 20 )
+	) BEGIN
+
+	DECLARE
+		migr_table_name VARCHAR ( 255 ) DEFAULT 'wcmchnldoc';
+  SELECT
+    concat('开始迁移 ', migr_table_name) info;
+
+	INSERT INTO trs_hycloud_iip.wcmchnldoc (
+		CHNLID,
+		DOCID,
+		DOCORDER,
+		DOCSTATUS,
+		CRUSER,
+		CRTIME,
+		DOCPUBTIME,
+		DOCPUBURL,
+		RECID,
+		DOCORDERPRI,
+		INVALIDTIME,
+		OPERUSER,
+		OPERTIME,
+		MODAL,
+		DOCRELTIME,
+		DOCCHANNEL,
+		DOCFLAG,
+		DOCKIND,
+		SITEID,
+		SRCSITEID,
+		DOCFIRSTPUBTIME,
+		NODEID,
+		CRDEPT,
+		DOCOUTUPID,
+		DOCFORM,
+		DOCLEVEL,
+		attachpic,
+		POSCHNLID,
+		DocType,
+		ISTIMINGPUBLISH,
+		ACTIONTYPE,
+		PUBSTATUS,
+		GDORDER,
+		DOCAUTHOR,
+		ORIGINRECID,
+		DOCSOURCENAME,
+		TIMEDSTATUS,
+		CANCELPUBTIME
+
+	) SELECT
+	CHNLID + channelIdOffset,
+	DOCID + docIdOffset,
+	DOCORDER,
+	DOCSTATUS,
+	CRUSER,
+	CRTIME,
+	DOCPUBTIME,
+	DOCPUBURL,
+	RECID + recIdOffset,
+	DOCORDERPRI,
+	INVALIDTIME,
+	OPERUSER,
+	OPERTIME,
+	MODAL,
+	DOCRELTIME,
+	DOCCHANNEL,
+	DOCFLAG,
+	DOCKIND,
+	SITEID + siteIdOffset,
+	SRCSITEID,
+	DOCFIRSTPUBTIME,
+	NODEID,
+	CRDEPT,
+	DOCOUTUPID,
+	DOCFORM,
+	DOCLEVEL,
+	attachpic,
+	POSCHNLID,
+	20,
+	0,
+	0,
+	0,
+	0,
+	NULL,
+	RECID + recIdOffset,
+	NULL,
+	0,
+	NULL
+	FROM
+		trs_data_migration.wcmchnldoc
+	WHERE
+		CHNLID > 0
+		AND SITEID > 0
+		AND RECID > prevRecId
+	ORDER BY
+		RECID ASC;
+
+	SET @maxRECID = IFNULL((SELECT MAX(recId) from trs_data_migration.wcmchnldoc), 0 );
+
+	SET @log_sql = trs_data_migration.build_migration_log_sql ( migr_table_name, @maxRECID, now() );
+	PREPARE stmt FROM @log_sql;
+	EXECUTE stmt;
+	DEALLOCATE PREPARE stmt;
+
+	CALL trs_data_migration.setOffset ( migr_table_name, recIdOffset, prevRecId, @maxRECID );
+
+	SELECT
+		concat( '完成迁移 ', migr_table_name ) info;
+
+END $$
+DELIMITER;

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

@@ -0,0 +1,199 @@
+USE trs_data_migration;
+DROP PROCEDURE
+IF
+	EXISTS sp_data_migration_wcmdocument;
+
+DELIMITER $$
+CREATE PROCEDURE sp_data_migration_wcmdocument (
+	IN prevDocId BIGINT ( 20 ),
+	IN docIdOffset BIGINT ( 20 ),
+	IN viewIdOffset BIGINT ( 20 ),
+	IN siteIdOffset BIGINT ( 20 ),
+	IN channelIdOffset BIGINT ( 20 )
+	) BEGIN
+
+	DECLARE
+		migr_table_name VARCHAR ( 255 ) DEFAULT 'wcmdocument';
+
+	SELECT
+    concat('开始迁移 ', migr_table_name) info;
+
+	INSERT INTO trs_hycloud_iip.wcmdocument (
+		DOCID,
+		DOCCHANNEL,
+		DOCVERSION,
+		DOCTYPE,
+		DOCTITLE,
+		ShortTitle,
+		DOCSOURCE,
+		DOCSECURITY,
+		DOCSTATUS,
+		DOCKIND,
+		DOCCONTENT,
+		DOCHTMLCON,
+		DOCABSTRACT,
+		DOCKEYWORDS,
+		DOCRELWORDS,
+		DOCPEOPLE,
+		DOCPLACE,
+		DOCAUTHOR,
+		DOCEDITOR,
+		DOCAUDITOR,
+		DOCOUTUPID,
+		DOCVALID,
+		DOCPUBURL,
+		DOCPUBTIME,
+		DOCRELTIME,
+		CRUSER,
+		CRTIME,
+		DOCWORDSCOUNT,
+		DOCPRO,
+		RIGHTDEFINED,
+		TITLECOLOR,
+		TEMPLATEID,
+		SCHEDULE,
+		DOCNO,
+		DOCFLAG,
+		EDITOR,
+		ATTRIBUTE,
+		HITSCOUNT,
+		DOCPUBHTMLCON,
+		SUBDOCTITLE,
+		ATTACHPIC,
+		DOCLINK,
+		DOCFILENAME,
+		DOCFROMVERSION,
+		OPERTIME,
+		OPERUSER,
+		FLOWOPERATIONMARK,
+		FLOWPREOPERATIONMARK,
+		FLOWOPERATIONMASKENUM,
+		DOCSOURCENAME,
+		DOCLINKTO,
+		DOCMIRRORTO,
+		RANDOMSERIAL,
+		POSTUSER,
+		ISPAGEIMG,
+		PUBLISHDATE,
+		PAGENUM,
+		PAGENAME,
+		PDFFILENAME,
+		PAGEIMAGEFILENAME,
+		MAP,
+		YINTI,
+		SITEID,
+		SRCSITEID,
+		DOCFIRSTPUBTIME,
+		NODEID,
+		ORDERID,
+		CRDEPT,
+		DOCFORM,
+		DOCLEVEL,
+		olddocpuburl,
+		AttachVideo,
+		AttachAudio,
+		ThumbFiles,
+		commentFlag,
+		readingMoodFlag,
+		FromType,
+		FromId,
+		OriginDocId
+	) SELECT
+	DOCID + docIdOffset,
+	DOCCHANNEL + channelIdOffset,
+	DOCVERSION,
+	DOCTYPE,
+	DOCTITLE,
+	NULL,
+	DOCSOURCE,
+	DOCSECURITY,
+	DOCSTATUS,
+	DOCKIND + viewIdOffset,
+	DOCCONTENT,
+	DOCHTMLCON,
+	DOCABSTRACT,
+	DOCKEYWORDS,
+	DOCRELWORDS,
+	DOCPEOPLE,
+	DOCPLACE,
+	DOCAUTHOR,
+	DOCEDITOR,
+	DOCAUDITOR,
+	DOCOUTUPID,
+	DOCVALID,
+	DOCPUBURL,
+	DOCPUBTIME,
+	DOCRELTIME,
+	CRUSER,
+	CRTIME,
+	DOCWORDSCOUNT,
+	DOCPRO,
+	RIGHTDEFINED,
+	TITLECOLOR,
+	TEMPLATEID,
+	SCHEDULE,
+	DOCNO,
+	DOCFLAG,
+	EDITOR,
+	ATTRIBUTE,
+	HITSCOUNT,
+	DOCPUBHTMLCON,
+	SUBDOCTITLE,
+	ATTACHPIC,
+	DOCLINK,
+	DOCFILENAME,
+	DOCFROMVERSION,
+	OPERTIME,
+	OPERUSER,
+	FLOWOPERATIONMARK,
+	FLOWPREOPERATIONMARK,
+	FLOWOPERATIONMASKENUM,
+	DOCSOURCENAME,
+	DOCLINKTO,
+	DOCMIRRORTO,
+	RANDOMSERIAL,
+	POSTUSER,
+	ISPAGEIMG,
+	PUBLISHDATE,
+	PAGENUM,
+	PAGENAME,
+	PDFFILENAME,
+	PAGEIMAGEFILENAME,
+	MAP,
+	YINTI,
+	SITEID + siteIdOffset,
+	SRCSITEID,
+	DOCFIRSTPUBTIME,
+	NODEID,
+	ORDERID,
+	CRDEPT,
+	DOCFORM,
+	DOCLEVEL,
+	olddocpuburl,
+	0,
+	0,
+	NULL,
+	NULL,
+	NULL,
+	0,
+	0,
+	0
+	FROM
+		trs_data_migration.wcmdocument
+	where DOCID > prevDocId
+	ORDER BY
+		docid ASC;
+
+	SET @maxDOCID = IFNULL( ( SELECT MAX( DOCID ) FROM trs_data_migration.wcmdocument ), 0 );
+
+	SET @log_sql = trs_data_migration.build_migration_log_sql ( migr_table_name, @maxDOCID, now( ) );
+	PREPARE stmt FROM @log_sql;
+	EXECUTE stmt;
+	DEALLOCATE PREPARE stmt;
+
+	CALL trs_data_migration.setOffset ( migr_table_name, docIdOffset, prevDocId, @maxDOCID );
+	SELECT
+		concat( '完成迁移 ', migr_table_name ) info;
+
+END $$
+DELIMITER;

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

@@ -0,0 +1,80 @@
+
+use trs_data_migration;
+
+DROP PROCEDURE IF EXISTS sp_data_migration_wcmmetatable;
+DELIMITER $$
+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))
+
+	BEGIN
+
+    DECLARE isover INT DEFAULT 0;
+    DECLARE f_TABLEINFOID INT DEFAULT 0;
+    DECLARE f_TABLENAME VARCHAR(200) DEFAULT NULL;
+
+
+    DECLARE cur CURSOR FOR
+      SELECT
+        TABLEINFOID,
+        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_TABLEINFOID,
+      f_TABLENAME
+    ;
+
+    WHILE isover= 0 DO
+
+      # 断点续传
+      IF (f_TABLEINFOID > prevTableInfoId)
+
+      THEN
+
+
+        SET @metaTableExists = (SELECT count(1) from information_schema.tables where table_schema = 'trs_hycloud_iip' and table_name = concat('wcmmetatable', f_TABLENAME, citySuffix) );
+
+        IF (@metaTableExists > 0)
+
+          THEN
+
+            select concat('开始更新 ', 'wcmmetatable', f_TABLENAME, citySuffix, '.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);
+
+            select concat('更新元数据sql: ', @log_sql );
+            prepare stmt from @log_sql;
+            EXECUTE stmt;
+            deallocate prepare stmt;
+
+
+            select concat('完成更新 ', 'wcmmetatable', f_TABLENAME, citySuffix, '.MetaDataId & ChannelId') info;
+        END IF ;
+
+      END IF ;
+
+    FETCH cur INTO
+      f_TABLEINFOID,
+      f_TABLENAME
+    ;
+
+    END WHILE;
+
+    CLOSE cur;
+
+
+	END $$
+DELIMITER ;