|
@@ -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 ;
|