3_sp_data_migration_xwcmclassinfo.sql 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. DROP PROCEDURE IF EXISTS sp_data_migration_xwcmclassinfo;
  2. DELIMITER $$
  3. CREATE PROCEDURE sp_data_migration_xwcmclassinfo(IN prevClassInfoId BIGINT(20),
  4. IN classInfoIdOffset BIGINT(20))
  5. BEGIN
  6. DECLARE isover INT DEFAULT 0;
  7. DECLARE migr_table_name varchar(255) DEFAULT 'xwcmclassinfo';
  8. DECLARE f_CLASSINFOID int(11) DEFAULT NULL;
  9. DECLARE f_CLASSORDER int(11) DEFAULT NULL;
  10. DECLARE f_CNAME varchar(50) DEFAULT '0';
  11. DECLARE f_CDESC varchar(200) DEFAULT NULL;
  12. DECLARE f_PARENTID int(11) DEFAULT '0';
  13. DECLARE f_ROOTID int(11) DEFAULT '0';
  14. DECLARE f_CRUSER varchar(30) DEFAULT NULL;
  15. DECLARE f_CRTIME datetime DEFAULT NULL;
  16. DECLARE f_CCODE varchar(50) DEFAULT NULL;
  17. DECLARE cur CURSOR FOR
  18. SELECT
  19. CLASSINFOID,
  20. CLASSORDER,
  21. CNAME,
  22. CDESC,
  23. PARENTID,
  24. ROOTID,
  25. CRUSER,
  26. CRTIME,
  27. CCODE
  28. FROM xwcmclassinfo
  29. ORDER BY CLASSINFOID asc;
  30. DECLARE CONTINUE HANDLER FOR NOT FOUND SET isover = 1;
  31. OPEN cur;
  32. FETCH cur INTO
  33. f_CLASSINFOID,
  34. f_CLASSORDER,
  35. f_CNAME,
  36. f_CDESC,
  37. f_PARENTID,
  38. f_ROOTID,
  39. f_CRUSER,
  40. f_CRTIME,
  41. f_CCODE
  42. ;
  43. select concat('开始迁移 ', migr_table_name) info;
  44. WHILE isover= 0 DO
  45. # 断点续传
  46. IF (f_CLASSINFOID > prevClassInfoId)
  47. THEN
  48. SET @CLASSINFOID = f_CLASSINFOID;
  49. SET f_CLASSINFOID = f_CLASSINFOID + classInfoIdOffset;
  50. SET @offset_num = ifnull((SELECT offset_num FROM data_migration_offset WHERE table_name = migr_table_name AND start_id < f_PARENTID and end_id >= f_PARENTID), 0);
  51. SET f_PARENTID = f_PARENTID + @offset_num;
  52. IF (f_ROOTID > 0)
  53. THEN
  54. SET f_ROOTID = f_ROOTID + classInfoIdOffset;
  55. SET f_CLASSORDER = f_CLASSORDER + classInfoIdOffset;
  56. END IF ;
  57. insert into trs_hycloud_iip.xwcmclassinfo
  58. (
  59. CLASSINFOID,
  60. CLASSORDER,
  61. CNAME,
  62. CDESC,
  63. PARENTID,
  64. ROOTID,
  65. CRUSER,
  66. CRTIME,
  67. CCODE
  68. )
  69. VALUES
  70. (
  71. f_CLASSINFOID,
  72. f_CLASSORDER,
  73. f_CNAME,
  74. f_CDESC,
  75. f_PARENTID,
  76. f_ROOTID,
  77. f_CRUSER,
  78. f_CRTIME,
  79. f_CCODE
  80. );
  81. SET @log_sql = build_migration_log_sql(migr_table_name, @CLASSINFOID, now());
  82. prepare stmt from @log_sql;
  83. EXECUTE stmt;
  84. deallocate prepare stmt;
  85. call setOffset(migr_table_name, classInfoIdOffset, prevClassInfoId, @CLASSINFOID);
  86. END IF ;
  87. FETCH cur INTO
  88. f_CLASSINFOID,
  89. f_CLASSORDER,
  90. f_CNAME,
  91. f_CDESC,
  92. f_PARENTID,
  93. f_ROOTID,
  94. f_CRUSER,
  95. f_CRTIME,
  96. f_CCODE
  97. ;
  98. END WHILE;
  99. CLOSE cur;
  100. select concat('完成迁移 ', migr_table_name) info;
  101. END $$
  102. DELIMITER ;