3_sp_data_migration_xwcmclassinfoview.sql 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. DROP PROCEDURE IF EXISTS sp_data_migration_xwcmclassinfoview;
  2. DELIMITER $$
  3. CREATE PROCEDURE sp_data_migration_xwcmclassinfoview(IN prevClassInfoViewId BIGINT(20),
  4. IN classInfoViewIdOffset BIGINT(20),
  5. IN classInfoIdOffset BIGINT(20),
  6. IN docIdOffset BIGINT(20),
  7. IN viewIdOffset BIGINT(20))
  8. BEGIN
  9. DECLARE isover INT DEFAULT 0;
  10. DECLARE migr_table_name varchar(255) DEFAULT 'xwcmclassinfoview';
  11. DECLARE view_migr_table_name varchar(255) DEFAULT 'xwcmviewinfo';
  12. DECLARE class_migr_table_name varchar(255) DEFAULT 'xwcmclassinfo';
  13. DECLARE doc_migr_table_name varchar(255) DEFAULT 'wcmdocument';
  14. DECLARE f_CLASSINFOVIEWID int(11) DEFAULT NULL;
  15. DECLARE f_CLASSINFOID int(11) DEFAULT NULL;
  16. DECLARE f_METADATAID int(11) DEFAULT NULL;
  17. DECLARE f_VIEWID int(11) DEFAULT NULL;
  18. DECLARE f_CRUSER varchar(30) DEFAULT NULL;
  19. DECLARE f_CRTIME datetime DEFAULT NULL;
  20. DECLARE cur CURSOR FOR
  21. SELECT
  22. CLASSINFOVIEWID,
  23. CLASSINFOID,
  24. METADATAID,
  25. VIEWID,
  26. CRUSER,
  27. CRTIME
  28. FROM xwcmclassinfoview
  29. ORDER BY CLASSINFOVIEWID asc;
  30. DECLARE CONTINUE HANDLER FOR NOT FOUND SET isover = 1;
  31. OPEN cur;
  32. FETCH cur INTO
  33. f_CLASSINFOVIEWID,
  34. f_CLASSINFOID,
  35. f_METADATAID,
  36. f_VIEWID,
  37. f_CRUSER,
  38. f_CRTIME
  39. ;
  40. select concat('开始迁移 ', migr_table_name) info;
  41. WHILE isover= 0 DO
  42. # 断点续传
  43. IF (f_CLASSINFOVIEWID > prevClassInfoViewId)
  44. THEN
  45. SET @CLASSINFOVIEWID = f_CLASSINFOVIEWID;
  46. SET f_CLASSINFOVIEWID = f_CLASSINFOVIEWID + classInfoViewIdOffset;
  47. SET @class_offset_num = ifnull((SELECT offset_num FROM data_migration_offset WHERE table_name = class_migr_table_name AND start_id < f_CLASSINFOID and end_id >= f_CLASSINFOID), 0);
  48. SET f_CLASSINFOID = f_CLASSINFOID + @class_offset_num;
  49. SET @doc_offset_num = ifnull((SELECT offset_num FROM data_migration_offset WHERE table_name = doc_migr_table_name AND start_id < f_METADATAID and end_id >= f_METADATAID), 0);
  50. SET f_METADATAID = f_METADATAID + @doc_offset_num;
  51. SET @view_offset_num = ifnull((SELECT offset_num FROM data_migration_offset WHERE table_name = view_migr_table_name AND start_id < f_VIEWID and end_id >= f_VIEWID), 0);
  52. SET f_VIEWID = f_VIEWID + @view_offset_num;
  53. insert into trs_hycloud_iip.xwcmclassinfoview
  54. (
  55. CLASSINFOVIEWID,
  56. CLASSINFOID,
  57. METADATAID,
  58. VIEWID,
  59. CRUSER,
  60. CRTIME
  61. )
  62. VALUES
  63. (
  64. f_CLASSINFOVIEWID,
  65. f_CLASSINFOID,
  66. f_METADATAID,
  67. f_VIEWID,
  68. f_CRUSER,
  69. f_CRTIME
  70. );
  71. SET @log_sql = build_migration_log_sql(migr_table_name, @CLASSINFOVIEWID, now());
  72. prepare stmt from @log_sql;
  73. EXECUTE stmt;
  74. deallocate prepare stmt;
  75. call setOffset(migr_table_name, classInfoViewIdOffset, prevClassInfoViewId, @CLASSINFOVIEWID);
  76. END IF ;
  77. FETCH cur INTO
  78. f_CLASSINFOVIEWID,
  79. f_CLASSINFOID,
  80. f_METADATAID,
  81. f_VIEWID,
  82. f_CRUSER,
  83. f_CRTIME
  84. ;
  85. END WHILE;
  86. CLOSE cur;
  87. select concat('完成迁移 ', migr_table_name) info;
  88. END $$
  89. DELIMITER ;