3_sp_data_migration_wcmmetablexx.sql 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. DROP PROCEDURE IF EXISTS sp_data_migration_increment_wcmmetablexx;
  2. DELIMITER $$
  3. CREATE PROCEDURE sp_data_migration_increment_wcmmetablexx(IN metableName VARCHAR(255),
  4. IN prevDocId BIGINT(20),
  5. IN docIdOffset BIGINT(20),
  6. IN channelIdOffset BIGINT(20))
  7. BEGIN
  8. DECLARE isover INT DEFAULT 0;
  9. DECLARE channel_migr_table_name varchar(255) DEFAULT 'wcmchannel';
  10. DECLARE f_CHNLID int(11) DEFAULT '0';
  11. DECLARE f_METADATAID int(11) DEFAULT '0';
  12. DECLARE cur CURSOR FOR
  13. SELECT
  14. channel_id,
  15. metadat_id
  16. FROM meta_data
  17. ORDER BY metadat_id asc;
  18. DECLARE CONTINUE HANDLER FOR NOT FOUND SET isover = 1;
  19. OPEN cur;
  20. FETCH cur INTO
  21. f_CHNLID,
  22. f_METADATAID;
  23. select concat('开始迁移 ', metableName) info;
  24. WHILE isover= 0 DO
  25. # 支持断点续传
  26. IF (f_METADATAID > prevDocId)
  27. THEN
  28. SET @metadataId = f_METADATAID;
  29. SET f_METADATAID = f_METADATAID + docIdOffset;
  30. 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);
  31. SET f_CHNLID = f_CHNLID + @channel_offset_num;
  32. #sql 修改数据
  33. SET @up_sql = concat('UPDATE trs_hycloud_iip.', metableName,
  34. ' SET MetaDataId = ', f_METADATAID,
  35. ', ChannelId = ', f_CHNLID,
  36. ' WHERE MetaDataId = ', @metadataId);
  37. prepare stmt from @up_sql;
  38. EXECUTE stmt;
  39. deallocate prepare stmt;
  40. SET @log_sql = build_migration_log_sql(metableName, @metadataId, now());
  41. prepare stmt from @log_sql;
  42. EXECUTE stmt;
  43. deallocate prepare stmt;
  44. call setOffset(metableName, docIdOffset, prevDocId, @metadataId);
  45. END IF ;
  46. FETCH cur INTO
  47. f_CHNLID,
  48. f_METADATAID;
  49. END WHILE;
  50. CLOSE cur;
  51. select concat('完成迁移 ', metableName) info;
  52. END $$
  53. DELIMITER ;