3_sp_data_migration_xwcmmaterial.sql 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. DROP PROCEDURE IF EXISTS sp_data_migration_xwcmmaterial;
  2. DELIMITER $$
  3. CREATE PROCEDURE sp_data_migration_xwcmmaterial(IN prevAppendixId BIGINT(20),
  4. IN appendixIdOffset BIGINT(20),
  5. IN docIdOffset BIGINT(20),
  6. IN masIdOffset BIGINT(20))
  7. BEGIN
  8. DECLARE isover INT DEFAULT 0;
  9. DECLARE migr_table_name varchar(255) DEFAULT 'xwcmmaterial';
  10. DECLARE f_APPENDIXID int(11) DEFAULT 0;
  11. DECLARE f_APPDOCID int(11) DEFAULT 0;
  12. DECLARE f_APPFLAG smallint(6) DEFAULT NULL;
  13. DECLARE f_APPFILE varchar(255) DEFAULT 0;
  14. DECLARE f_AppFromId int(11) DEFAULT '0';
  15. DECLARE f_AppFromType int(11) DEFAULT '0';
  16. DECLARE f_CRUSER varchar(50) DEFAULT NULL;
  17. DECLARE f_CRTIME datetime DEFAULT NULL;
  18. DECLARE cur CURSOR FOR
  19. SELECT
  20. a.MATERIALQUOTEID,
  21. a.DOCID,
  22. b.MATERIALTYPE,
  23. b.FILENAME,
  24. b.MASID,
  25. b.CrUser,
  26. b.CrTime
  27. FROM
  28. xwcmmaterialquote a
  29. LEFT JOIN xwcmmaterial b ON a.MATERIALID = b.MATERIALID
  30. WHERE b.MATERIALTYPE IN (1, 2)
  31. ORDER BY
  32. a.MATERIALQUOTEID ASC;
  33. DECLARE CONTINUE HANDLER FOR NOT FOUND SET isover = 1;
  34. OPEN cur;
  35. FETCH cur INTO
  36. f_APPENDIXID,
  37. f_APPDOCID,
  38. f_APPFLAG,
  39. f_APPFILE,
  40. f_AppFromId,
  41. f_CRUSER,
  42. f_CRTIME
  43. ;
  44. select concat('开始迁移 ', migr_table_name) info;
  45. WHILE isover = 0 DO
  46. # 断点续传
  47. IF (f_APPENDIXID > prevAppendixId)
  48. THEN
  49. SET @APPENDIXID = f_APPENDIXID;
  50. SET f_APPENDIXID = f_APPENDIXID + appendixIdOffset;
  51. SET @doc_offset_num = ifnull((SELECT offset_num FROM data_migration_offset WHERE table_name = migr_table_name AND start_id < f_APPDOCID and end_id >= f_APPDOCID), docIdOffset);
  52. SET f_APPDOCID = f_APPDOCID + @doc_offset_num;
  53. IF (f_APPFLAG = 1)
  54. THEN
  55. SET f_APPFLAG = 80;
  56. SET f_AppFromId = 0;
  57. SET f_AppFromType = 0;
  58. END IF;
  59. IF (f_APPFLAG = 2)
  60. THEN
  61. SET f_APPFLAG = 90;
  62. SET @mas_offset_num = ifnull((SELECT offset_num FROM trs_data_migration_mas.data_migration_offset WHERE table_name = 'mas_masvideo' AND start_id < f_AppFromId and end_id >= f_AppFromId), masIdOffset);
  63. SET f_AppFromId = f_AppFromId + @mas_offset_num;
  64. SET f_APPFILE = f_AppFromId;
  65. SET f_AppFromType = 1;
  66. END IF;
  67. insert into trs_hycloud_iip.wcmappendix
  68. (
  69. APPENDIXID,
  70. APPDOCID,
  71. APPFILE,
  72. APPFILETYPE,
  73. APPFLAG,
  74. CRUSER,
  75. CRTIME,
  76. AppFromType,
  77. AppFromId
  78. )
  79. VALUES
  80. (
  81. f_APPENDIXID,
  82. f_APPDOCID,
  83. f_APPFILE,
  84. -1,
  85. f_APPFLAG,
  86. f_CRUSER,
  87. f_CRTIME,
  88. f_AppFromType,
  89. f_AppFromId
  90. );
  91. SET @log_sql = build_migration_log_sql(migr_table_name, @APPENDIXID, now());
  92. prepare stmt from @log_sql;
  93. EXECUTE stmt;
  94. deallocate prepare stmt;
  95. call setOffset(migr_table_name, appendixIdOffset, prevAppendixId, @APPENDIXID);
  96. END IF ;
  97. FETCH cur INTO
  98. f_APPENDIXID,
  99. f_APPDOCID,
  100. f_APPFLAG,
  101. f_APPFILE,
  102. f_AppFromId,
  103. f_CRUSER,
  104. f_CRTIME
  105. ;
  106. END WHILE;
  107. CLOSE cur;
  108. select concat('完成迁移 ', migr_table_name) info;
  109. END $$
  110. DELIMITER ;