3_sp_data_migration_wcmmetablexx.sql 2.2 KB

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