123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- DROP PROCEDURE IF EXISTS sp_data_migration_increment_wcmmetablexx;
- DELIMITER $$
- CREATE PROCEDURE sp_data_migration_increment_wcmmetablexx(IN metableName VARCHAR(255),
- IN prevDocId BIGINT(20),
- IN docIdOffset BIGINT(20),
- IN channelIdOffset BIGINT(20))
- BEGIN
- DECLARE isover INT DEFAULT 0;
- DECLARE channel_migr_table_name varchar(255) DEFAULT 'wcmchannel';
- DECLARE f_CHNLID int(11) DEFAULT '0';
- DECLARE f_METADATAID int(11) DEFAULT '0';
- DECLARE cur CURSOR FOR
- SELECT
- channel_id,
- metadat_id
- FROM meta_data
- ORDER BY metadat_id asc;
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET isover = 1;
-
- OPEN cur;
-
- FETCH cur INTO
- f_CHNLID,
- f_METADATAID;
- select concat('开始迁移 ', metableName) info;
- WHILE isover= 0 DO
- # 支持断点续传
- IF (f_METADATAID > prevDocId)
- THEN
- SET @metadataId = f_METADATAID;
- SET f_METADATAID = f_METADATAID + docIdOffset;
- SET @channel_offset_num = ifnull((SELECT offset_num FROM data_migration_offset WHERE table_name = channel_migr_table_name AND start_id < f_CHNLID and end_id >= f_CHNLID), channelIdOffset);
- SET f_CHNLID = f_CHNLID + @channel_offset_num;
- #sql 修改数据
- SET @up_sql = concat('UPDATE trs_hycloud_iip.', metableName,
- ' SET MetaDataId = ', f_METADATAID,
- ', ChannelId = ', f_CHNLID,
- ' WHERE MetaDataId = ', @metadataId);
- prepare stmt from @up_sql;
- EXECUTE stmt;
- deallocate prepare stmt;
- SET @log_sql = build_migration_log_sql(metableName, @metadataId, now());
- prepare stmt from @log_sql;
- EXECUTE stmt;
- deallocate prepare stmt;
- call setOffset(metableName, docIdOffset, prevDocId, @metadataId);
- END IF ;
- FETCH cur INTO
- f_CHNLID,
- f_METADATAID;
-
- END WHILE;
-
- CLOSE cur;
- select concat('完成迁移 ', metableName) info;
- END $$
- DELIMITER ;
|